0

在我的项目中,我有以下导航控制器链

Home controller -> Table View controller -> Page View Controller 

现在在页面视图控制器中至少查看一次所有页面后 - 我想自动转到完全不同的视图,即测验视图。

Quiz Controller-> Result Controller -> Another Quiz Controller-> Result controller -> Yet another quiz Controller -> Result Controller -> Back to Home Controller

有3种不同的测验。完成所有三个测验后,我想回家。同样在每个结果控制器中,我想提供一个返回家的选项。当到达主页视图时,它应该是一个全新的重新启动。

在任何中间阶段,我都不想通过链返回——即不需要中间控制器。那么为此目的应该使用什么segue呢?

我反对 push segue,因为它会包含所有以前的视图控制器。有什么方法可以停止导航控制器链并启动新的控制器?

如果使用模态视图,则作为一种良好的编程习惯,父视图应该关闭子视图。但在这种情况下,我不想回去,而是想从这个模态视图开始新的导航控制器链。但是最后还是想直接回到home控制器。

4

2 回答 2

1

使用popToRootViewControllerAnimatedpopToViewController:animated

popToRootViewControllerAnimated:弹出堆栈上除根视图控制器之外的所有视图控制器并更新显示。

popToViewController:animated:弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。

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];
于 2013-03-16T11:55:05.540 回答
0

我最终使用了故事板展开功能。

在 home 控制器中实现一个方法,然后从任何源控制器将 segue 连接到该方法就可以了。

展开故事板Segues教程

于 2013-03-19T05:31:34.233 回答