0

これを検索しようとしましたが、完璧な解決策が見つかりません。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 に移動しようとすると、アプリがクラッシュします。

4

1 に答える 1