我正在尝试实现一个类似于 Tweetie 应用的 UI 结构,其行为如下:顶级视图控制器似乎是一个导航控制器,其根视图是 "账户" 表视图。如果点击任何帐户,它将进入第二层,这里有一个底部的选项卡栏。每个选项卡项目显示不同的列表,并允许您进一步深入(随后的级别不显示选项卡栏)。
因此,这似乎是实现层次结构:
UINavigationController
- Accounts:
UITableViewController
UITabBarController
- Tweets:
UITableViewController
- 推文/用户等的详细信息视图
- Replies:
UITableViewController
- ...
- Tweets:
- Accounts:
这似乎有效 [^1],但根据 -pushViewController:animated:
的 SDK 文档,它似乎是不受支持的(强调添加):
viewController:要推到堆栈上的视图控制器。它不能是选项卡栏控制器的实例。
我想避免使用私有 API 等,但不确定为什么即使它似乎工作正常,这种用法也被明确禁止。有人知道原因吗?
我考虑过将选项卡栏控制器作为主控制器,并让每个选项卡包含单独的导航控制器。问题在于,每个导航控制器都需要共享一个根视图控制器(即 Tweetie 中的 "账户" 表)- 这似乎不起作用:将表控制器推到第二个导航控制器似乎会将其从第一个导航控制器中删除。更不用说当选择不同的帐户时所有的记账工作可能会很麻烦。
应该如何正确地实现这个功能?
[^1]: 需要对选项卡栏控制器进行子类化,以便在该级别上的选项卡栏控制器的导航项与所选选项卡的导航项保持同步,并且各个选项卡的表格控制器需要将其各自的详细信息视图推送到 self.tabBarController.navigationController
而不是 self.navigationController
。