【问题标题】:How to correctly place a UINavigationBar in a complicate view hierarchy?如何正确地将 UINavigationBar 放置在复杂的视图层次结构中?
【发布时间】:2011-03-08 18:44:53
【问题描述】:

在我正在开发的 iPad 应用程序中,我有这个 'unusual' 视图层次结构:

如果我将mastercontroller 设置为不显示UINavigationControllerUINavigationBar,则UI 很好(仅显示状态栏)。

在我尝试将detailcontroller 推入UINavigationController 之后(这次我想要显示该栏),导航栏出现在 y 轴上平移(它是框架显示它的原点是(0,20 ) 而 20 是状态栏的高度,对吧?...)

当我回到mastercontroller 时,该栏还在,已翻译。这是我得到的:

关于如何解决这个问题的任何线索?

【问题讨论】:

    标签: iphone objective-c ipad uinavigationcontroller uinavigationbar


    【解决方案1】:

    问题的根源在于您将控制器层次结构与视图层次结构混合在一起。

    假设 maincontroller 是一个普通的视图控制器,我会将你的 uinavigationcontroller 移动到它的兄弟。这样,您无需解决任何问题。

    如果 UINavigationController 没有 parentViewController,它基本上假定它在窗口中。

    【讨论】:

    • 我需要这个层次结构,因为 topcontroller 有一个视图必须始终显示在顶部,并且它必须在设备方向更改中旋转。如何使 UINavigationController 成为主控制器的直接兄弟?
    【解决方案2】:

    我找到了解决方案。就像 amattn 说的我必须简化层次结构,但这不能那么容易地完成,因为我有约束让顶视图始终可见并且能够旋转。

    这个想法是继承 UINavigationController 并将视图及其管理放入这个子类中。这样,这个新控制器的实例可以直接应用于主窗口,并且可以将其他控制器推入其中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      相关资源
      最近更新 更多