【问题标题】:Improving the portability of UIViewControllers that require a UINavigationBar提高需要 UINavigationBar 的 UIViewController 的可移植性
【发布时间】:2016-05-15 23:54:57
【问题描述】:

我们经常尝试重用我们的视图控制器,无论它们是被推送到导航控制器还是被呈现。但是,当显式 UINavigationBar 是视图控制器功能设计的一部分时,事情可能会变得有点棘手。

如果我们只是设置视图控制器的导航项,推送到导航控制器会按预期工作,但呈现结果根本没有导航栏。另一方面,如果我们向视图显式添加和配置 UINavigationBar,呈现效果很好,但推送会导致双导航栏。虽然我们可以为该视图指定要隐藏父导航控制器的导航栏,但它会在推送或弹出该视图控制器时创建一个笨拙的动画过渡。

(在一个完美的世界中,我会想象 navigationBar 属性将由 UIViewController 而不是 UINavigationController 管理。唉,事实并非如此,所以我在这里。)

这里的人们发现了哪些最佳实践来维护需要 UINavigationBar 的视图控制器的可移植性?

【问题讨论】:

    标签: ios cocoa-touch uiviewcontroller uinavigationcontroller uinavigationbar


    【解决方案1】:

    我已通过以下两种方式之一处理此问题:

    1. 我回过头来断言viewDidAppear: self.navigationController 不为零。推动提供UINavigationController 的职责,将您的视图控制器实例包装到该类的客户端。

    2. 或者,您可以嵌入一个UINavigationBar 实例并自行管理它,只需记住在viewWillAppear: 中的包含导航控制器中隐藏可能的导航栏。

    【讨论】:

    • 这两种解决方案都与我在上面询问的内容背道而驰。我正在寻找更好的方法来抽象我的视图控制器,这样它们就不必依赖自省或对父控制器做出糟糕的假设。
    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多