在 iOS 5 上使用 Segues/Storyboard 弹出当前视图

Posted

技术标签:

【中文标题】在 iOS 5 上使用 Segues/Storyboard 弹出当前视图【英文标题】:Pop the current view using Segues/Storyboard on iOS 5 【发布时间】:2012-06-17 15:30:34 【问题描述】:

我正在使用 ios 5 SDK 创建一个应用程序。我设法使用 Storyboard 的 Segues 推送视图,但我找不到弹出当前视图并返回上一个视图的正确方法。

我没有使用任何导航控制器(该应用没有任何顶部或底部栏)。

我认为使用 modal 或 push segue 不是解决方案,因为它会实例化一个新的控制器。

我是否必须使用带有相反动画的自定义 Segue 并在最后删除视图?还是有更好的办法?

【问题讨论】:

【参考方案1】:

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

如果您使用“推送”转场(需要导航控制器),请使用导航控制器的 popViewControllerAnimated: 方法撤消最后一次推送转场。 (或其他撤消更多操作的方法;请参阅UINavigationController 文档。)

如果您使用“模态”segues,请在呈现当前视图控制器的视图控制器上调用 dismissViewControllerAnimated:completion:(您可以从其 presentingViewController 属性中获取)。


更新:在 iOS 6 及更高版本中,在情节提要中“返回”有展开转场。它仍然不是无代码解决方案——也不应该是这样,因为您需要能够执行诸如区分模态视图控制器的“完成”和“取消”退出之类的事情。但它确实可以让您将应用程序的更多语义流放入情节提要中。 Apple 有一个tech note that describes them in detail,它们也包含在the video from WWDC 2012 Session 407 中。

【讨论】:

【参考方案2】:

您可以尝试从要关闭的控制器调用[self dismissViewControllerAnimated:YES completion:nil];(无论控制器已被推送,还是以模态方式显示)。

这里是相关文档:UIViewController Class Reference

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

【讨论】:

注意:这与导航控制器一起工作(弹出)。 太棒了;)。你让我今天一整天都感觉很好 :)。谢谢【参考方案3】:

只是为了澄清。

在被推送的类中。只需连接以下内容,控制器和视图就会弹出。

[self.navigationController popViewControllerAnimated:YES];

【讨论】:

【参考方案4】:

在您的 stroyboard 上创建 Segue 类型“自定义”。这可以来自一个按钮。 创建一个名为“popSegue”的新 UIStoryboardSegue 类 在 popSegue.m 文件中添加以下内容;

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

-在故事板编辑器中。

-选择segue并将Segue Class更改为“popSegue”

-将标识符设置为“popSegue”

完成!

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

希望对你有帮助

【讨论】:

【参考方案5】:

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

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender;

Then in the .m file add this:

- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender 


你可以添加任何你想在这个方法中执行的清理代码。接下来转到您的故事板并选择推送的视图。我假设您在视图上有某种按钮,用户点击以表示他已完成。单击该按钮,按住键并拖动到视图下方的绿色框,即出口。释放鼠标按钮但继续按住键。将出现一个弹出窗口,您的方法将显示在列表中。选择该方法。现在,当用户单击按钮时,视图将弹出,您将返回到启动方法。

【讨论】:

以上是关于在 iOS 5 上使用 Segues/Storyboard 弹出当前视图的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 5.0 上使用 NSURLIsExcludedFromBackupKey 而不会崩溃

UITextView - 在 XCode 5 上设置字体不适用于 iOS 6

UITextView - 在 XCode 5 上设置字体不适用于 iOS 6

在 iOS 5 上使用 Segues/Storyboard 弹出当前视图

如何在新的 iOS 7 和 Xcode 5 上使用旧 ios 版本构建我的应用程序

在没有 XCODE 5 的运行 iOS7 的设备上测试 iOS 6 应用程序