我有一系列嵌套的导航控制器(因为我希望导航栏位于顶部,我无法在不使用导航控制器的情况下使该条看起来正确)。
所以基本上它看起来像这样: -NavigationController-VC1 - >(模态) - NavigationController-VC2 - >(模态)...等
当我在摘要ViewController时,最后一个 - 我想要一个按钮将用户带回到最根的ViewController。我怎么能这样做?
我已尝试过popToRootViewControllerAnimated,但由于我有一系列导航控制器(更好的解决方案??),因此无法正常工作
谢谢!
修改
现在导航:
导航控制器 - > VC1 - (模态) - > VC2 - (模态) - > VC3 ......等等
答案 0 :(得分:0)
popToRootViewController:Animated
只会返回导航控制器视图控制器数组的[0]
。换句话说,第一个导航控制器的根将始终为VC1,第二个导航控制器的根将始终转到VC2。您应该重新考虑应用程序的结构,因为您不应该将一个导航控制器推送到另一个 - 这没有意义。这是你可以做的:
Navigation Controller -> VC1 -> (push segue) -> VC2 -> (push segue) -> VC3
这样popToRootViewController:Animated
将返回VC1。
我使用多个导航控制器的唯一原因是,如果我有某种表格,其中包含以下选项:
---
A Navigation Controller -> VCA1 -> (push segue) -> VCA2 -> (push segue) -> VCA3
---
B Navigation Controller -> VCB1 -> (push segue) -> VCB2 -> (push segue) -> VCB3
---
C Navigation Controller -> VCC1 -> (push segue) -> VCC2 -> (push segue) -> VCC3
---
即使在这种情况下,根视图控制器也将始终为VCA1,VCB1或VCC1。
希望这有帮助。
如果您发布您想要完成的内容,这也会有所帮助,以便我们更好地理解您的问题。
答案 1 :(得分:0)
通过编写第一行,您可以获得所有视图控制器的索引,从第二行开始,您将到达目的地。
NSArray * array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:2] animated:YES];
答案 2 :(得分:0)
您没有说明您是否使用故事板,但是如果您正在尝试放松细分。 What are Unwind segues for and how do you use them?
使用展开segue可以让您回到需要进入层次结构的位置。
答案 3 :(得分:0)
如果您对所有视图控制器使用相同的导航控制器,则此行适用于您。
[self.navigationController popToRootViewControllerAnimated:YES];
但在您的情况下,您正在展示模型视图控制器。在这种情况下,您需要先解除第一个模型视图控制器,然后才能显示其他模型。