【问题标题】:UINavigationController inside a UITabBarController inside a UINavigationControllerUINavigationController 在 UINavigationController 内的 UITabBarController 内
【发布时间】:2010-11-24 12:39:01
【问题描述】:
我的问题是我想要一个标签栏视图,它的子视图控制器首先显示。在子视图控制器中,根据单击的控件,我要么想要 A)在标签栏视图中向下钻取(滑开子视图控制器)或 B)在标签栏视图上向下钻取(滑开标签栏视图控制器)。
我已经尝试通过在标签栏控制器的子视图控制器中包装一个导航控制器(这样我可以使用方法 A 向下钻取)然后在标签栏控制器本身周围包装另一个导航控制器来解决这个问题(所以我可以使用方法 B)向下钻取,因此标题。就这样:
窗口 -> UINavigationController -> UITabBarController -> UINavigationController -> 子视图控制器
问题是我最终得到了两个导航栏:
two navigation bars!! http://img527.imageshack.us/img527/240/problemc.png
有没有其他人遇到过这个问题,如果有,您是如何解决的?
谢谢!
【问题讨论】:
标签:
iphone
cocoa-touch
uikit
uinavigationcontroller
uitabbarcontroller
【解决方案1】:
在这种情况下,也许您可以简单地使用 UITabBar 并以编程方式管理其状态,而无需在另一个控制器中嵌套标签栏控制器。
【解决方案2】:
如果您使用两个嵌套的 UINavigationController,我认为您无法解决拥有两个导航栏的问题。您可能能够为您不想显示其栏的控制器创建子类或方法调整 UINavigationController,并以某种方式阻止它出现或被创建。您可能还可以相应地设置导航栏的 opaque 属性或 hidden 属性,这也可能有效,但您可能需要进行一些花哨的 UIView 重新排列以防止出现空白。
这纯属猜测;我不知道这两种方法是否可行或它们如何可行,但如果我尝试这样做,我会开始使用这些想法。
【解决方案3】:
只要隐藏你不想要的栏,就这么简单:
[navigationController setNavigationBarHidden:YES animated:NO];