我在这里已经阅读了很多关于segues
和story board
的问题和答案,我对于在视图之间构建层次结构的方式变得更加困惑
我的问题非常基本和简单,我认为它们可能对其他人有所帮助:
1.简单来说,我应该何时使用push
,modal
或costume
segues?
2.从view1
转到view2
到view3
时,我应该如何从3
返回1
?我可以将一个segue从3拖回1吗?在这种情况下,2和3会出现内存方面的情况吗?
3当dismissing
一个视图时,为什么它总是回到上一个视图?有没有办法让segue自动解除前一个视图?
我认为对其工作方式的简单而简短的总结将是如此有用。 感谢。
答案 0 :(得分:1)
如果您正在使用Storyboards和segues,您可能希望利用退出segues返回。在您的示例中,您希望从View 3
返回View 1
。根据您的到达情况,您可能有多种选择可以返回。例如,如果您使用了UINavigationController
并推送到那里,如果View 1
是rootViewController
,您可以简单地调用popToRootViewControllerAnimated:
,它将处理从中获取的内容无论你在导航堆栈中的哪个位置回到根目录。如果View 1
不是根,您可以选择使用popToViewController:animated:
API,假设您引用了来自View 1
的{{1}},如果您这样做通常不理想重新关注问题。正如Renish所指出的,您可以选择访问View 3
的{{1}}属性。
回到故事板,无论好坏,他们都可以通过退出segue来处理这一切。故事板配置决定了返回到您来自的视图的正确方法。在这个答案https://stackoverflow.com/a/15839298/250190
中查看这个很好的解释答案 1 :(得分:0)
我想你想要3view to 1view.Simply make the view of your view controller。
How do I get the RootViewController from a pushed controller?
使用UINavigationController的viewControllers属性。示例代码:
//在另一个ViewController中 NSArray * viewControllers = self.navigationController.viewControllers; UIViewController * rootViewController = [viewControllers objectAtIndex:viewControllers.count - 2];
这是获取“后退”视图控制器的标准方法。 objectAtIndex:0工作的原因是因为您尝试访问的视图控制器也是根视图控制器,如果您在导航中更深入,则后视图将与根视图不同。