当前位置:  开发笔记 > 前端 > 正文

选项卡栏控制器位于导航控制器内,或共享导航根视图

如何解决《选项卡栏控制器位于导航控制器内,或共享导航根视图》经验,为你挑选了5个好方法。

我正在尝试实现类似于Tweetie应用程序的UI ,其行为如下:顶级视图控制器似乎是导航控制器,其根视图是"帐户"表视图.如果您点击任何帐户,它将转到第二级,其底部有一个标签栏.每个选项卡项显示不同的列表,并允许您进一步向下钻取(后续级别不显示选项卡栏).

所以,这似乎是实现层次结构:

UINavigationController

    账户:UITableViewController

    UITabBarController

      推文:UITableViewController

      详细视图的推文/用户/等

      回复:UITableViewController

      ...

这似乎有效[^ 1],但根据SDK文档-pushViewController:animated:(强调添加)似乎不支持:

viewController:推入堆栈的视图控制器.它不能是标签栏控制器的实例.

我想避免私有API等,但我不确定为什么这种用法被明确禁止,即使它似乎工作正常.谁知道原因?

我已经考虑过将标签栏控制器作为主控制器,每个标签都包含单独的导航控制器.这个问题是每个导航控制器需要共享一个根视图控制器(即Tweetie中的"帐户"表) - 这似乎不起作用:将表控制器推送到第二个导航控制器似乎将其删除从第一个.更不用说选择不同帐户时所有的簿记可能会很痛苦.

我该如何以正确的方式实现这一目标?

[^ 1]:标签栏控制器需要进行子类化,以便该级别的标签栏控制器导航项与所选标签的导航项保持同步,并且单个标签的表控制器需要将其各自的详细视图推送到self.tabBarController.navigationController而不是self.navigationController.



1> Loren..:

之前的两个答案是正确的 - 我不在UITabBarControllerTweetie中使用.编写一个很容易被推到导航控制器堆栈上的自定义XXTabBarController(简单子类UIViewController)很容易,但仍然遵循"视图控制器"的理念.特定于帐户的视图(Tweets/ Replies/ Messages)上的每个"选项卡" 都是它自己的视图控制器,就它们而言,它们在屏幕上被简单的交换UITabBarController.


您的自定义选项卡栏控制器类如何处理其子控制器的navigationItem和navigationController属性的管道?

2> Robert Conn..:

我正在构建一个使用类似Tweetie导航框架的应用程序.我在我的博客www.wiredbob.com上写了一篇关于如何做到这一点的帖子,该博客也链接到源代码.这是一个完整的模板,您可以将其作为另一个项目的基础.祝好运!


对于那些想知道的人,上述博客文章的链接是http://www.wiredbob.com/blog/2009/4/20/iphone-tweetie-style-navigation-framework.html
这篇博文对我来说已经死了,任何人都有这样的机会?

3> Himadri Chou..:

可以将UITabBar添加到任何UIViewController.这样你实际上不必推送UITabBarController,因此保持在Apple API的指导范围内.

在界面构建器中,UITabBar位于Cocoa Touch库中的"Windows,Views&Bars"下.



4> Alpinista..:

我在几个应用程序中执行此操作.将标签栏添加到基于navigationController的应用程序的技巧是不使用TabBarController.向视图添加选项卡栏,使该视图的视图控制器成为TabBarDelegate,并在视图控制器的代码中的选项卡栏上响应用户选择.

我使用Tab Bars将其他视图作为子视图添加到Tab Bar的视图,重新加载具有不同数据集的表视图,重新加载UIPickerView等.



5> esilver..:

我在过去的一小时里一直在努力实施一个,UITabBar因为当我试图展示我的观点时,它会被隐藏起来; 然后我发现这篇文章:

基本上,请确保按照以下代码行在tabbar下面插入新视图:

[self.view insertSubview:tab2ViewController.view belowSubview:myTabBar];

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有