在 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 弹出当前视图