2011-02-07 43 views
0

我在我的appdelegate中创建了一个UINavigationController,并使用我的“modelselectionViewController”对其进行了初始化。这个VC有不同的uibuttons,当触摸时,一个新的VC(“modelViewController”)被推送到导航堆栈上。整个应用程序的一个UINavigationcontroller?

这个“modelViewController”充当我的模板视图,并具有带有不同选项卡的uitabbarcontroller。第一个VC立即显示,但导航控制器上的任何更改都不起作用。我想设置标题的名称,但该navigationcontroller为空。

NSLog(@“navi:%@”, self.navigationController);

如果我改变我的代码,当触摸不同的标签时推动不同的VC,导航的作品,但只有第三级导航层次。

我想知道是否可以为我所有不同的选项卡使用一个导航控制器。希望我明确了我的设置。感谢你的帮助。谢谢

回答

0

如果您从UINavigationController中管理的视图创建UITabBarController(即:如果您首先创建navigationcontroller,并且它仍在创建tabbarcontroller时),那么您就开始与框架进行斗争。下面是来自文档上结合的ViewController接口警告:

使用一个标签栏 控制器还可以使用导航 控制器在一个或多个标签中的应用。当 将这两种类型的视图控制器组合在相同的用户界面 中时,标签栏控制器总是充当用于导航 控制器的包装器 。您从不想将 标签栏控制器推到导航控制器的导航 堆栈上。 这样做会造成异常情况 只能在特定视图控制器位于导航堆栈顶部 处时出现选项卡栏。标签栏 被设计为持久的,因此 这种瞬态方法可能会让用户产生混淆。

我读的是“如果不破的东西,我们还没有在下次更新时认为,我们可能会拒绝反正应用程序,因为它是“混淆用户。”

我假设你不需要返回,就可以终止整个导航层次和导航控制器(就像你刚刚用它来做一次性设置屏幕一样)。或者,您可以查看导航控制器管理的视图控制器内的其他导航选项。

有一件事要尝试导航到UITableView,并使用其单元格将模态视图推送到导航堆栈上。这对于用户来说是熟悉的,并且与导航类的意图一起动摇。

1

我想你可能想读Combining ViewControllers

通常,您应该将tabbar控制器作为“根”控制器,而不是“子”控制器。在苹果的文档中快速搜索并没有产生正式的“禁止”,但它可能是。

相关问题