【发布时间】:2016-12-06 23:45:38
【问题描述】:
我试图从导航控制器堆栈中以模态方式呈现视图控制器,然后在解除后返回到该特定视图控制器索引。此NavigationController 在UITabBarController 内。
我的应用是用 XIB 和编程导航控制器和标签栏控制器编写的。我没有使用故事板。 Navigation Controller 导航全部用self.navigationController.pushViewController(viewController: TabOnePageTwoViewController, animated: true) 完成
这是我的视图控制器配置。
RootTabBarController -> UINavigationController(rootViewController: TabOneController) -> TabOnePageOneController -> ModalView
问题是,当我在模态呈现的视图中self.dismiss() 时,我返回到导航控制器的根目录,而不是呈现模态的视图TabOneController
我认为正确的方法是从导航控制器堆栈中选择视图控制器,并选择 popToViewController 来选择正确的。
为此,我认为在self.dismiss() 的完成块中,我需要导航到正确的视图控制器。
let viewControllers = self.navigationController!.viewControllers
self.dismiss(animated: true, completion: {
for aViewController in viewControllers {
if(aViewController is TabOnePageTwoViewViewController){
print("navigating back to page one now")
self.navigationController!.popToViewController(aViewController, animated: true);
}
}
})
`
很遗憾,这不起作用。据我所知,self.navigationController 无法从模态视图中访问。
在关闭显示的模式后如何返回导航控制器索引?
我已通过以下 URL 将示例应用程序上传到 github:https://github.com/thexande/TabControllerAndNavigationControllerExample
如果你对 IOS 中的程序化导航很了解,那就下载看看吧!
谢谢大家!!
【问题讨论】:
标签: uiviewcontroller uinavigationcontroller swift3 uitabbarcontroller