在我的项目中,我有以下导航 Controller 链
Home controller -> Table View controller -> Page View Controller
现在在页面 View Controller 中,在所有页面至少查看一次之后 - 我想自动转到完全不同的 View ,即测验 View 。
Quiz Controller-> Result Controller -> Another Quiz Controller-> Result controller -> Yet another quiz Controller -> Result Controller -> Back to Home Controller
有 3 种不同的测验。在完成所有三项测验后,我想回家。另外,在每个结果 Controller 中,我想提供一个返回主页的选项。当到达主视图时,应该重新启动。
在任何中间阶段,我都不想通过链返回,即不需要中间 Controller 。那么应该使用什么segue来达到这个目的呢?
我反对推送转场,因为它将拥有所有先前 View Controller 的堆栈。有什么方法可以停止导航 Controller 链并启动新的导航 Controller 链吗?
作为一种良好的编程实践,如果使用模态视图,则父 View 应该关闭 subview 。但在这种情况下,我不想回去,而是想从此模态视图启动新的导航 Controller 链。但最后还是想直接回到home Controller 。
最佳答案
使用popToRootViewControllerAnimated
或popToViewController:animated
popToRootViewControllerAnimated:
弹出堆栈上除 Root View Controller 之外的所有 View Controller 并更新显示。
popToViewController:animated:
弹出 View Controller ,直到指定的 View Controller 位于导航堆栈的顶部。
popToViewController
示例
if([[self.navigationController viewControllers] containsObject:HomecontrollerObj])
{
[self.navigationController popToViewController:HomecontrollerObj animated:animation];
}
回家,也用
[HomecontrollerObj.navigationController popViewControllerAnimated:NO];
[TableViewcontrollerObj.navigationController popViewControllerAnimated:NO];
[PageViewControllerObj.navigationController popViewControllerAnimated:NO];
关于ios - 如何打破导航 Controller 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448860/