【问题标题】:Unwinding a UIStoryboardSegue subclass in a UINavigationController在 UINavigationController 中展开 UIStoryboardSegue 子类
【发布时间】:2013-05-24 09:40:31
【问题描述】:

我正在尝试展开 UIStoryboardSegue 子类。如果主窗口的 rootViewController 是 UIViewController 子类,那么一切正常。

但是,如果它是 UINavigationController 子类,我的 segue 永远不会在展开时触发。

我创建了一个示例应用程序来演示这一点,并将其放在 Github 上: https://github.com/simonmaddox/CustomUnwindSegue

【问题讨论】:

    标签: iphone uinavigationcontroller uistoryboard uistoryboardsegue


    【解决方案1】:

    在对此使用 DTS 请求后,Apple 提出以下建议:

    简短的回答是,当 UINavigationController 存在时,SMXViewController 实际上并不是所呈现的 SMXSecondViewController 的父级。因此,它仅参与有限的平仓过程。

    ...

    解决此实现细节的一种方法是使用您自己的 UINavigationController 子类。然后,您可以覆盖 -segueForUnwindingToViewController:fromViewController:identifier: 以实现您自己的逻辑或将消息转发到 UINavigationController 父类(如果它是针对您不感兴趣的展开转场)。

    完整的解决方案也存在于 DTS_Response 分支上: https://github.com/simonmaddox/CustomUnwindSegue/tree/DTS_Response

    【讨论】:

    • 原来它不仅仅是 UINavigationController,而是任何 Container ViewController。因此,如果您正在使用 addChildViewController / removeFromParentViewController 构建组合界面,则需要将 segueForUnwindingToViewController:fromViewController:identifier 添加到组合视图控制器(称为 addChildViewController 的那个) - 谢谢你的帖子是什么导致我这个额外的警告是我的问题的根源。
    【解决方案2】:

    Here 是完整的示例,并为您解释。

    【讨论】:

    • 谢谢,但这不使用 UIStoryboardSegue 子类。即使在该博客文章底部链接的源代码中, -segueForUnwindingToViewController:fromViewController:identifier: 也不会被调用。
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    相关资源
    最近更新 更多