2014-11-23 12 views
6

ho bisogno di presentare View Controller dal AppDelegate, così ho scritto il seguente codice:Perchè finestra è pari a zero nel AppDelegate

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let authViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as ViewController 
if let keyWindow = UIApplication.sharedApplication().keyWindow { 
    keyWindow.rootViewController = authViewController 
} 

Purtroppo, window e keyWindow sono entrambi nil. Perché?

+1

Quando viene eseguito questo codice? – jrturton

+0

@jrturton Questo è il codice eseguito nell'applicazione func (applicazione: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool' function – FrozenHeart

+0

Ok, in quella funzione la tua app non avrà una finestra a meno che tu non sia " ne ho creato uno manualmente o hai impostato uno storyboard o xib come interfaccia di avvio. L'hai fatto? – jrturton

risposta

24

È necessario creare la finestra da soli se non si utilizza l'opzione di interfaccia principale:

window = UIWindow(frame:UIScreen.mainScreen().bounds) 

Swift 3,0

self.window = UIWindow(frame: UIScreen.main.bounds) 

quindi chiamare il vostro codice di cui sopra, utilizzando window.

Infine, chiamare makeKeyAndVisible() sulla finestra.

+2

Non voglio caricare automaticamente il controller di visualizzazione iniziale, perché devo presentare manualmente il controller della vista di autorizzazione o il controller della vista principale – FrozenHeart

+0

Beh, non è stato chiaro dalla tua domanda! Aggiornamento in arrivo ... – jrturton

+0

Hai ragione, mi dispiace per questo – FrozenHeart

Problemi correlati