我正在尝试实现一个像Tweetie应用程序中那样结构化的UI ,其行为如下:顶级视图控制器似乎是导航控制器,其根视图是“帐户”表视图。如果单击任何帐户,它将转到第二级,底部具有一个标签栏。每个选项卡项都显示一个不同的列表,并允许您进一步深入(后续级别不显示选项卡栏)。
因此,这似乎是实现层次结构:
UINavigationController
- 帐户:
UITableViewController
UITabBarController
- 鸣叫:
UITableViewController
- 推文/用户/等的详细视图
- 回覆:
UITableViewController
- ...
- 鸣叫:
- 帐户:
这似乎可行[^ 1],但根据SDK文档-pushViewController:animated:
(针对以下内容)似乎不受支持:
viewController:被推入堆栈的视图控制器。它不能是标签栏控制器的实例。
我想避免使用私有API之类的方法,但是我不确定为什么即使在看起来很好的情况下也禁止这种用法。有人知道原因吗?
我考虑过将标签栏控制器作为主控制器,每个标签都包含单独的导航控制器。这样做的问题是每个导航控制器都需要共享一个根视图控制器(即Tweetie中的“ Accounts”表)-这似乎不起作用:将表控制器推到另一个导航控制器似乎将其删除。从第一开始。在选择其他帐户时更不用说所有记账了,可能会很痛苦。
我应该如何正确实施此方法?
[^ 1]:选项卡栏控制器需要子类化,以便该级别的选项卡栏控制器的导航项与所选选项卡的导航项保持同步,并且单个选项卡的表控制器需要将其各自的详细信息视图推送到self.tabBarController.navigationController
而不是self.navigationController
。