使用iOS 5上的Segues / Storyboardpopup当前视图

我正在使用iOS 5 SDK创build应用程序。 我设法使用Storyboard的Segues来推送视图,但我找不到正确的方式来popup当前视图并返回到前一个视图。

我没有使用任何导航控制器(应用程序没有任何顶部或底部酒吧)。

我不认为使用模式或推继续其他方式将是解决scheme,因为它实例化一个新的控制器。

我是否必须使用与之相反的animation并在最后删除视图的自定义Segue? 或者,还有更好的方法 ?

你可以尝试调用[self dismissViewControllerAnimated:YES completion:nil]; 从要控制的控制器(无论控制器是否被按下或模态显示)。

这里是相关的文档: UIViewController类的参考

呈现视图控制器负责解除其呈现的视图控制器。 如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发给呈现视图控制器。

iOS 5中的故事板不提供“无代码”的方式从segue返回 – 这是你需要实现自己的东西。

如果您使用“push”segues(需要导航控制器),请使用导航控制器的popViewControllerAnimated:方法来撤消上一次推送segue。 (或其他方法撤消更多;请参阅UINavigationController文档。)

如果你使用“modal”segues,在视图控制器上调用dismissViewControllerAnimated:completion:显示当前的视图控制器(你可以从它的presentingViewController属性中获得)。


更新:在iOS 6及更高版本中,有一个放松的过程,可以在故事板中“返回”。 这仍然不是一个无代码的解决scheme – 不应该是这样,因为你需要能够做一些事情,比如区分“完成”和“取消”从模态视图控制器退出。 但它确实可以让您将更多的应用程序的语义stream程放入故事板。 苹果公司有一个技术说明,详细描述它们, WWDC 2012 Session 407的video也包含了这些技术说明 。

只是为了澄清。

在被推动的类中。 只需连线以下和控制器和视图将被popup。

 [self.navigationController popViewControllerAnimated:YES]; 

在你的滑雪板上创buildSeguetypes“自定义”。 这可以从一个button。 创build一个名为“popSegue”的新UIStoryboardSegue类在popSegue.m文件中添加以下内容;

 -(void)perform{ UIViewController *sourceViewContreoller = [self sourceViewController]; [sourceViewContreoller.navigationController popViewControllerAnimated:YES]; } 

– 在故事板编辑器中。

– selectsegue并将Segue类更改为“popSegue”

– 设置标识符“popSegue”

完成!

您可以在整个项目中使用相同的“popSegue”类。

希望这可以帮助

我也使用Xcode 5,这是如何完成的。 首先,在推送另一个的视图代码文件中,在.h文件中创build一个IBAction方法,例如:

 - (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender; Then in the .m file add this: - (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender { } 

你可以在这个方法中添加你想执行的清理代码。 接下来转到故事板并select推送的视图。 我假设你在视图上有一些button,用户可以点击表示他已经完成了。 点击该button,按住键并拖动到出口下方的绿色框中。 松开鼠标键,但继续按住键。 popup窗口会出现,你的方法将显示在列表中。 select该方法。 现在,当用户点击button时,视图将popup,您将返回到开始方法。