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