2017-07-25 5 views
1

anzuzeigen bewegend ich von AppDelegate auf einen neuen View-Controller bewegt bin mit diesem Code ich von irgendwo auf Stack-Überlauf gefundenSwift App-Abstürze nach Controller von AppDelegate

func changeRootViewController(with identifier:String!) { 
    let storyboard = self.window?.rootViewController?.storyboard 
    let desiredViewController = storyboard?.instantiateViewController(withIdentifier: identifier); 

    let snapshot:UIView = (self.window?.snapshotView(afterScreenUpdates: true))! 
    desiredViewController?.view.addSubview(snapshot); 

    self.window?.rootViewController = desiredViewController; 

    UIView.animate(withDuration: 0.3, animations: {() in 
     snapshot.layer.opacity = 0; 
     snapshot.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5); 
    }, completion: { 
     (value: Bool) in 
     snapshot.removeFromSuperview(); 
    }); 
} 

Es funktioniert gut, und ich bin in der Lage zu Bewegen Sie sich mit der Animation zu einem neuen View-Controller (, DER ERFORDERLICH IST). Aber sobald ich zu einer anderen App gehe und zurückkomme, stürzt die App mit einem Fehler ab.

Cannot snapshot view (; layer = >) with afterScreenUpdates:NO, because the view is not in a window. Use afterScreenUpdates:YES. fatal error: unexpectedly found nil while unwrapping an Optional value

Der andere Code Ich habe einen View-Controller von AppDelegate zum Öffnen

func showViewController(id: String){ 
    let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let initialViewControlleripad : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: id) as UIViewController 
    self.window = UIWindow(frame: UIScreen.main.bounds) 
    self.window?.rootViewController = initialViewControlleripad 
    self.window?.makeKeyAndVisible() 
} 

Es funktioniert aber perfekt, wenn versucht Animation hinzufügen die Animation funktioniert nicht. Also bitte helfen Sie bei der Lösung dieser Probleme.

+3

Verstehen Sie mich nicht falsch hier ist ein gutes Lernen "Kopieren Sie nicht nur den Code von StackOverflow" - Stattdessen versuchen Sie es zu verstehen und implementieren Sie Ihre eigenen. Ich habe den gleichen Fehler gemacht. Der Grund für den Absturz ist, dass Sie einen Schnappschuss des aktuellen Fensters erstellen und für die Animation verwenden. Wenn du die App aus dem Hintergrund öffnest, ist 'self.window' möglicherweise gleich Null, sodass du keinen Schnappschuss daraus machen kannst. Ich würde vorschlagen, einen anderen Weg zu finden, um Ihre Animation beim Öffnen der App hinzuzufügen – Bluewings

+0

https://www.gitbook.com/book/tra38/essential-copying-and-pasting-from-stack-overflow/details –

+0

nur Werte überprüfen benötigt bei gewünschtem ViewController vorhanden, während du von appdelgate aus kommst? –

Antwort

0

Haben Sie versucht mit Animation wie?

Verwandte Themen