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