iPhone - 将标签栏与多个导航栏结合

问题描述:

我正在尝试构建一个具有标签栏作为根控制器和多个导航栏的iPhone应用程序。我的疑问是,我是否应该为每个导航栏创建一个NavigationBarController类,以便将其放入应用程序中?或者是否有可能只创建一个导航控制器来管理应用程序中存在的所有导航栏控制器?iPhone - 将标签栏与多个导航栏结合

如果应用程序中存在多个导航控制器,我可以使用“self”访问正确的导航控制器来推/视视图吗?还是应该使用应用程序委托的委托来访问每个导航栏控制器?

(我假设所有的导航栏控制器的应用程序委托声明,是这种做法正确或是否有更好的方法?)

感谢很多提前

的常用方法实现这一点是创建一个标签栏应用程序,然后将标签栏中的每个项目更改为UINavigationController。如果你这样做,你绝对可以使用self来访问navigationController - 特别是你可以使用self.navigationController

为每个选项卡插入一个唯一的UINavigationController

由于导航控制器只能有一个线性堆栈的视图控制器,因此不能在单个控制器上管理单个控制器。每个标签都应该有自己的导航控制器,每个标签都有一个不同的根控制器。

当心可能的泄漏在上面这部分代码:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools]; 

你也可以使用这样的:

UIBarButtonItem* rightButtonBar = [[UIBarButtonItem alloc] initWithCustomView:tools]; 
self.navigationItem.rightBarButtonItem = rightButtonBar; 
[rightButtonBar release]; 

;)...或者使用自动释放

+0

感谢您的提示!我会仔细看看的!米克尔 – mgfernan 2010-12-10 16:20:41

实现此目的的常用方法是创建一个选项卡栏应用程序,然后将选项卡栏中的每个项目更改为UINavigationCon troller。

这是实现这一点的方式。我已经将5个导航控制器加载到标签栏控制器中。关键技巧是规划应用程序的导航,因为每个导航控制器都应该在新的导航树开始的地方进行。