これを検索しようとしましたが、完璧な解決策が見つかりません。appDelegate から、最初のコントローラーを rootViewController として設定し、ViewController (つまり、アニメーション付きの mainViewController) をプッシュしています。次に、2番目のコントローラーをプッシュしようとしています。2 番目のコントローラーから、ボタンのクリックで 3 番目のコントローラーまたは rootViewController に移動できます。また、popToViewController を使用して secondController から戻った後、2 番目の viewController に移動しようとすると、アプリがクラッシュします。
appdelegate で rootViewController を次のように設定しています。
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()
ViewController(mainController) を次のようにプッシュします。
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);
}
次に、2 番目の viewController を次のようにプッシュします。
let tutorialView=myStory.instantiateViewController(withIdentifier: "BookmarksDetails") as! BookmarksDetails;
self.navigationController!.pushViewController(tutorialView, animated: true);
2 番目の viewController から次のように取得します。
let testController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
testController.isOpenLeftDrawer = true
appDelegate.window?.rootViewController = testController
self.navigationController?.popToRootViewController(animated: true)
viewController(mainController) から secondViewController に移動しようとすると、アプリがクラッシュします。