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

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

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

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

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

【问题讨论】:

    标签: ios ios5 uistoryboard 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 {
          
          }
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-05-16
            • 2015-08-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-09
            • 1970-01-01
            相关资源
            最近更新 更多