【问题标题】:iPhone - Combining a Tab Bar with multiple navigation barsiPhone - 将标签栏与多个导航栏相结合
【发布时间】:2010-02-27 07:56:56
【问题描述】:
我正在尝试构建一个 iPhone 应用程序,它有一个标签栏作为根控制器和几个导航栏。我的疑问是,我应该为每个要放入应用程序的导航栏创建一个 NavigationBarController 类吗?或者是否可以只创建一个导航控制器来管理应用程序中存在的所有导航栏控制器?
如果应用程序中存在多个导航控制器,我可以使用“self”访问推送/弹出视图的正确导航控制器吗?还是应该使用 Application 委托的委托来访问每个导航栏控制器?
(我假设所有导航栏控制器都在应用程序委托中声明,这种方法正确还是有更优雅的方法?)
提前非常感谢
【问题讨论】:
标签:
iphone
uinavigationcontroller
uitabbarcontroller
【解决方案1】:
实现这一点的常用方法是创建一个标签栏应用程序,然后将标签栏中的每个项目更改为一个 UINavigationController。如果你这样做,你绝对可以使用 self 来访问 navigationController - 具体来说你可以使用self.navigationController。
【解决方案2】:
注意以上代码这部分可能的泄漏:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
你可以改用这个:
UIBarButtonItem* rightButtonBar = [[UIBarButtonItem alloc] initWithCustomView:tools];
self.navigationItem.rightBarButtonItem = rightButtonBar;
[rightButtonBar release];
;) ... 或使用自动释放
【解决方案3】:
为每个标签插入一个唯一的UINavigationController。
您不能让单个控制器管理多个选项卡,因为导航控制器只能有一个线性的视图控制器堆栈。每个选项卡都应该有自己的导航控制器,每个选项卡都有不同的根控制器。
【解决方案4】:
实现这一点的常用方法是创建一个 Tab Bar 应用程序并
然后将标签栏中的每个项目更改为 UINavigationController。
这是实现这一目标的方法。我已将 5 个导航控制器加载到标签栏控制器中。关键提示是规划 App 的导航,因为每个 navController 都应该在新导航树开始的地方发生。