Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios popToViewController之后pushViewController上的应用程序崩溃_Ios_Swift3_Uinavigationcontroller_Pushviewcontroller_Poptoviewcontroller - Fatal编程技术网

Ios popToViewController之后pushViewController上的应用程序崩溃

Ios popToViewController之后pushViewController上的应用程序崩溃,ios,swift3,uinavigationcontroller,pushviewcontroller,poptoviewcontroller,Ios,Swift3,Uinavigationcontroller,Pushviewcontroller,Poptoviewcontroller,我试图寻找这个,但找不到任何完美的解决方案。 我的应用程序有自定义的动画视图和两侧抽屉。我还有自定义的导航控制器,它有滑动顶栏。从appDelegate我将第一个控制器设置为rootViewController,然后按下ViewController(即带有动画的mainViewController)。 然后尝试推第二个控制器。从第二个控制器,我可以点击按钮转到第三个控制器或rootViewController。 当我使用popToViewController从secondController返回

我试图寻找这个,但找不到任何完美的解决方案。 我的应用程序有自定义的动画视图和两侧抽屉。我还有自定义的导航控制器,它有滑动顶栏。从appDelegate我将第一个控制器设置为rootViewController,然后按下ViewController(即带有动画的mainViewController)。 然后尝试推第二个控制器。从第二个控制器,我可以点击按钮转到第三个控制器或rootViewController。 当我使用popToViewController从secondController返回后试图转到second 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)按如下方式推送:

从第二个viewController返回为:

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);
}
let tutorialView=myStory.instantiateViewController(withIdentifier: "BookmarksDetails") as! BookmarksDetails;
self.navigationController!.pushViewController(tutorialView, animated: true);
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时,应用程序崩溃。

为什么要这样做-

app.navigationController.popViewController(animated: true);

只需按一下按钮,不要在此处使用pop ViewController代码。

为什么要这样做-

app.navigationController.popViewController(animated: true);

只需按下按钮,不要在此处使用pop ViewController代码。

在“按下ViewController(mainController)”中的最后一行没有任何意义<代码>应用程序导航控制器在推送中被包装(
),但不在弹出窗口中。如果它确实是可选的,则不应编译。还有,最后一行,popping与Push相反,为什么你要在没有动画的情况下推一个空视图,然后立即用动画弹出堆栈。我必须创建空的viewController,以便同时为两个viewController设置动画。你的“Push viewController(mainController)”中的最后一行没有意义<代码>应用程序导航控制器在推送中被包装(
),但不在弹出窗口中。如果它确实是可选的,则不应编译。还有,最后一行,“弹出”与“推动”相反,为什么要推动没有动画的空视图,并立即用动画弹出堆栈。我必须创建空的viewController,以便同时为两个viewController设置动画。尝试推送viewController,但它添加了过多的堆栈,并在几秒钟内显示黑屏。删除将viewController设置为rootViewController后,应用程序运行正常。@sagars这就是您在这行中所做的错误
让emptyView=UIViewController()
。按下一个空的viewController会导致黑屏我必须按下emptyView来制作动画。当我创建viewController的两个对象时。然后使用这两种方法在屏幕上制作幻灯片动画。感谢@Aditya Srivastava的快速帮助reply@sagarss如果您得到了解决方案,您可以将其标记为Answer尝试推送viewController,但它添加了过多的堆栈并在几秒钟内显示黑屏。删除将viewController设置为rootViewController后,应用程序运行正常。@sagars这就是您在这行中所做的错误
让emptyView=UIViewController()
。按下一个空的viewController会导致黑屏我必须按下emptyView来制作动画。当我创建viewController的两个对象时。然后使用这两种方法在屏幕上制作幻灯片动画。感谢@Aditya Srivastava的快速帮助reply@sagarss如果你得到了答案,你可以把它标记为答案