【问题标题】:Tab/navigation hybrid like iPod/Music选项卡/导航混合,如 iPod/音乐
【发布时间】:2009-11-27 21:30:39
【问题描述】:
我正在开发一个应用程序,我想使用 iPod/Music 应用程序用来导航播放列表的导航和标签栏的相同混合体。
基本上:
- 用于处理深入研究特定列表树的导航。
- 底部有一个标签栏,用于在列表之间切换,出现在大多数/所有子屏幕上。
- 标签栏的内容在所有屏幕之间保持不变。
- 标签栏对被点击的反应在所有屏幕上都是相同的:它将用户一直弹出到根目录并将他们放在该列表中。
导航嵌入标签,标签嵌入导航?两者似乎都不会完全符合我的要求。另一方面,如果我坚持使用基本的导航应用程序并添加选项卡,我不会有很多额外的代码吗?
对此最好的基本方法是什么?
【问题讨论】:
标签:
iphone
uinavigationcontroller
uitabbarcontroller
uitabbar
【解决方案1】:
我已经构建了可以做到这一点的应用程序。考虑它的最佳方式是从最狭窄的部分开始,即单个视图控制器。在 iPod 示例中,这将包括艺术家、专辑、播放列表、歌曲等的控制器。请注意,如果您点击播放列表,它会将您带到歌曲列表。这是两个独立的视图控制器。
您在 iPod 应用程序上看到的每个选项卡中都有一个导航控制器。导航控制器包装了应用程序选项卡的根视图控制器。然后将每个导航控制器设置为选项卡控制器的 ViewControllers。代码看起来像这样
FirstTabViewController *first = [[FirstTabViewController alloc] init...];
SecondTabViewController *second = ...;
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:first];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:second];
myTabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil];
// Then make sure to release things to avoid leaks
如果您想处理播放列表->选定播放列表中歌曲列表的转换,您可以在播放列表视图控制器 ([self.navigationController pushViewController:theListOfSongsViewController animated:SUREWHYNOT]) 中执行此操作。
【解决方案2】:
到目前为止,我正在查看每个窗格中带有 UINavigationControllers 的 UITabBarController,并使用一些自定义代码将目标选项卡上的导航控制器弹出回选项卡开关上的根目录。