如何在复杂的视图层次结构中正确放置UINavigationBar?

时间:2011-03-08 18:44:53

标签: iphone objective-c ipad uinavigationcontroller uinavigationbar

在我正在处理的iPad应用中,我有'不寻常'视图层次结构:

enter image description here

如果我设置mastercontroller不显示UINavigationBar的{​​{1}},则用户界面很好(仅显示状态栏)。

enter image description here

在我尝试将UINavigationController推入detailcontroller之后(这次我希望显示条形图),导航栏在y轴上显示为翻译(框架显示其原点是(0,20)和20是状态栏的高度,对吗?...)

当我回到UINavigationController时,酒吧仍在那里,翻译过来。这就是我得到的:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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