整个应用程序的一个UINavigationcontroller?

时间:2011-02-07 12:46:45

标签: iphone uinavigationcontroller uitabbarcontroller

我在我的appdelegate中创建了一个UINavigationController,并用我的“modelselectionViewController”初始化它。这个VC有不同的uibuttons,当触摸时,新的VC(“modelViewController”)被推送到导航堆栈上。

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

  

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

如果我在触摸不同的标签时更改我的代码以推送不同的VC,导航工作但只有第三级导航层次结构。

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

2 个答案:

答案 0 :(得分:1)

我想你可能想阅读Combining ViewControllers

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

答案 1 :(得分:0)

如果你从一个在UINavigationController中管理的视图创建一个UITabBarController(即:如果你先创建一个navigationcontroller,当你创建tabbarcontroller时它仍然存在),那么你就开始与框架进行斗争了。以下是关于组合viewcontroller接口的文档的警告:

  

使用标签栏的应用程序   控制器也可以使用导航   一个或多个选项卡中的控制器。什么时候   结合这两种类型的观点   控制器在同一个用户界面中,   标签栏控制器始终充当   导航的包装器   控制器。你永远不想推动   标签栏控制器进入导航   堆栈的导航控制器。   这样做会造成不寻常的情况   标签栏只出现在   一个特定的视图控制器在   导航堆栈的顶部。标签栏   被设计为持久的,等等   这种瞬态方法可以   让用户感到困惑。

我认为“如果它没有破坏我们在下一次更新时没有想到的东西,我们可能会拒绝该应用程序,因为它会让用户感到困惑。”

我想你可以杀死整个导航层次结构和导航控制器,如果你不需要返回那里(就像你刚用它来进行一次性设置屏幕)。或者您可以查看其他选项,以便在由navigationcontroller管理的viewcontroller中导航。

尝试的一件事可能是导航到UITableView,并使用其单元格将模态视图推送到导航堆栈。这对于用户来说是熟悉的,并且还与导航类的意图相吻合。