0

Ich habe versucht, dies zu suchen, kann aber keine perfekte Lösung finden. Meine App verfügt über benutzerdefinierte animierende Ansichten und beide Seite Schubladen.Ich habe auch benutzerdefinierte navigationController, die gleitenden oberen Leiste hat.Von appDelegate setze ich zuerst Controller als rootViewController und dann ViewController (d. H. MainViewController mit Animationen). dann versuchen, den zweiten Controller zu drücken. Vom zweiten Controller aus kann ich entweder zum dritten Controller oder zum rootViewController auf die Schaltfläche klicken. Und App stürzt ab, wenn ich nach dem Zurückgehen von SecondController mit popToViewController zum zweiten ViewController gehen wollte.App Absturz auf PushViewController nach PopToViewController

Ich gründe RootViewController bei AppDelegate als:

let profileViewController = mainStoryboard.instantiateViewController(withIdentifier: "LoadingDataView") as! LoadingDataView 
self.navigationController = SDNavigationController(rootViewController: profileViewController); 
self.navigationController.navigationBar.isHidden=true; 
self.window!.rootViewController = self.navigationController 
self.window!.makeKeyAndVisible() 

Pushing Viewcontroller (mainController) als:

if(app.navigationController.viewControllers.count < 2){ 
    let profileViewController=mainStoryboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
    app.navigationController?.pushViewController(profileViewController, animated: true); 
}else{ 
    let profileViewController=mainStoryboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
    app.navigationController?.pushViewController(profileViewController, animated: false); 
    let emptyView = UIViewController(); 
    app.navigationController?.pushViewController(emptyView, animated: false); 
    app.navigationController.popViewController(animated: true); 
} 

Dann zweiten Viewcontroller als Schub:

let tutorialView=myStory.instantiateViewController(withIdentifier: "BookmarksDetails") as! BookmarksDetails; 
self.navigationController!.pushViewController(tutorialView, animated: true); 

davor zurück zweiter viewController als:

App stürzt ab, wenn ich von ViewController (MainController) zu SecondViewController gehen wollte.

+0

Die letzte Zeile in Ihrem "Pushing viewController (mainController)" macht keinen Sinn. 'app.navigationController' ist beim Drücken, aber nicht im Pop ('? ') eingepackt. Wenn es tatsächlich optional ist, sollte dies nicht kompiliert werden. In der letzten Zeile ist Popping das Gegenteil von Pushing, warum schiebst du eine leere Ansicht ohne Animation und platzierst den Stack sofort mit Animation. – Sti

+0

Ich muss einen leeren ViewController für die gleichzeitige Animation von zwei ViewControllern erstellen. –

Antwort

1

Warum Sie dies tun -

app.navigationController.popViewController(animated: true); 

einfach nur drücken und verwenden Sie nicht den Pop Viewcontroller Code hier.

+0

Versucht, ViewController zu pushen, aber es fügt einen übermäßigen Stack hinzu und zeigt einen schwarzen Bildschirm für Sekundenbruchteile an. Nachdem die Einstellung viewController als rootViewController entfernt wurde, läuft die App gut. –

+0

@sagarss Das ist was du in dieser Zeile falsch machst: let emptyView = UIViewController() '. Das Drücken eines leeren viewControllers führt zu einem schwarzen Bildschirm –

+0

Ich muss leerenViewer für die Animation drücken. wie ich zwei Objekte von ViewController erstellen. Und dann beide Slide-Animation für Bildschirm verwenden. –