【问题标题】:iOS Unwind Segue stops working when embedded in a navigation controlleriOS Unwind Segue 在嵌入导航控制器时停止工作
【发布时间】:2013-03-29 11:43:30
【问题描述】:

我有一个 UIViewController,它有一个按钮,可以作为表单对 UIViewController 执行模态搜索。在那个表单上是一个取消按钮,它带有一个展开到原始 UIViewController 的转场。这似乎工作得非常愉快,并关闭了表单。

当我选择原始 UIViewController 并选择 XCode 中的选项以嵌入导航控制器时,展开转场似乎不再起作用,并且模式表单将不再取消。

我确信有一个简单的解释,但它目前正在回避我,所以欢迎任何想法。

谢谢。

【问题讨论】:

    标签: ios storyboard segue


    【解决方案1】:

    我不知道为什么你会看到你看到的行为,我也看到了。它发生在页面表和表单演示文稿中,但不适用于全屏。但是,展开转场仍在调用您放入原始控制器(您将展开转场连接到的那个)中的方法。因此,您需要做的就是在该方法中添加一行:

    [self dismissViewControllerAnimated:YES completion:nil];
    

    【讨论】:

    • 是的,你是对的,这确实有效...... 非常奇怪的行为虽然正确,但它适用于全屏?谢谢。
    • @Darren,是的,这对我来说似乎是一个错误。我找不到任何表明这是预期行为的文档。
    • 我也在带有 ipad 视网膜模拟器的 ios 8.2 上看到了这个。 IMO 这是一个错误
    • Bug 仍然存在于 Xcode 6.3.1 中...也存在于 iPhone 6 Plus 中...与尺寸等级有关。更多信息:openradar.appspot.com/20707045
    • 终于我整天都在寻找这个答案!!这是我确切行为的确切问题。
    【解决方案2】:

    这已经回答了,但上面并没有给我完整的解决方案,所以我想我会分享我的。

    对我来说,unwind 方法从未被调用过,所以我无法执行上述操作。相反,我用 IBAction 制作了一个简单的按钮并调用它。下面的 Swift 示例:

    @IBAction func cancelToRecipeController() {
        self.dismissViewControllerAnimated(true, completion: nil)
        print("cancel to recipe controller ran")
    }
    

    感谢上面@rdelmar 的方法调用!

    (这是为 ios 9 添加的)

    【讨论】:

      【解决方案3】:
       self.dismissViewControllerAnimated(true, completion: nil)
      

      “dismiss”对我不起作用,但 popToRoot 效果很好。

       [self.navigationController popToRootViewControllerAnimated:YES];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2014-11-17
        • 2013-07-29
        • 1970-01-01
        相关资源
        最近更新 更多