正确使用segues

时间:2014-01-25 11:39:48

标签: ios objective-c storyboard

我在这里已经阅读了很多关于seguesstory board的问题和答案,我对于在视图之间构建层次结构的方式变得更加困惑

我的问题非常基本和简单,我认为它们可能对其他人有所帮助:

1.简单来说,我应该何时使用pushmodalcostume segues?

2.从view1转到view2view3时,我应该如何从3返回1?我可以将一个segue从3拖回1吗?在这种情况下,2和3会出现内存方面的情况吗?

3当dismissing一个视图时,为什么它总是回到上一个视图?有没有办法让segue自动解除前一个视图?

我认为对其工作方式的简单而简短的总结将是如此有用。 感谢。

2 个答案:

答案 0 :(得分:1)

如果您正在使用Storyboards和segues,您可能希望利用退出segues返回。在您的示例中,您希望从View 3返回View 1。根据您的到达情况,您可能有多种选择可以返回。例如,如果您使用了UINavigationController并推送到那里,如果View 1rootViewController,您可以简单地调用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?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/occ/instp/UINavigationController/viewControllers

使用UINavigationController的viewControllers属性。示例代码:

//在另一个ViewController中 NSArray * viewControllers = self.navigationController.viewControllers; UIViewController * rootViewController = [viewControllers objectAtIndex:viewControllers.count - 2];

这是获取“后退”视图控制器的标准方法。 objectAtIndex:0工作的原因是因为您尝试访问的视图控制器也是根视图控制器,如果您在导航中更深入,则后视图将与根视图不同。