【问题标题】:UIStoryboard Show (e.g. push) simple inverse action to go backUIStoryboard 显示(例如推送)简单的反向操作返回
【发布时间】:2015-01-27 20:18:43
【问题描述】:

在故事板中,我们有很棒的功能,可以让我们进行展示(例如推送)。所以看起来逻辑是下一个:

如果我们没有导航控制器,那么视图控制器将使用当前模式逻辑。我的问题是我可以与 Show 一起使用任何逆向操作吗?

我有一个关闭当前视图控制器屏幕的 UIButton:

- (IBAction)onTappedCloseButton:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}

但是如果我没有导航控制器,我怎么能简单地使用逆向操作返回呢?所以我的解决方案是检查 self.navigationController 是否为 nil 然后使用解除选项:

[self dismissViewControllerAnimated:YES completion:nil];

但也许还有另一种很酷的解决方案,例如 Show(例如 push)。但是关闭(例如 pop)?

【问题讨论】:

    标签: ios segue uistoryboard xcode-storyboard xcode6.1


    【解决方案1】:

    是的,您可以使用 unwind segue 来返回,这将与 forward segue 是相反的。

    【讨论】:

      【解决方案2】:

      您有两种选择:

      1) 放松转场

      要进行展开转场,您必须在要“展开”的视图控制器中添加一个方法,格式如下:

      -(IBAction)someSelectorName:(UIStoryboardSegue *)sender;

      然后,您将能够从 UIButton 拖动到情节提要中的“退出”图标。

      将它连接到您刚刚定义的选择器,UIKit 将计算出如何返回到该视图控制器,而无需您编写任何代码。这可能特别有用,因为它可以确定何时需要多次调用 -dismissViewControllerAnimated: 并可以成功调用这些方法。当您要展开的视图控制器具有导航控制器时,它甚至可以从嵌入在导航控制器中的视图控制器内展开。 (即它会做一个dismissViewController而不是一个pop来放松)

      2) 自定义展开方法

      假设您不想或不能从情节提要中触发此操作。这里还有一个选项及其详细说明:

      Whats the programmatic opposite of showViewController:sender:

      要点是您可以通过在 UIKit 容器视图控制器(或您自己的容器)上实现类别来编写自己的通用解除方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多