如何显示不属于我的 UINavigationController 根目录的 UITabBar?

Posted

技术标签:

【中文标题】如何显示不属于我的 UINavigationController 根目录的 UITabBar?【英文标题】:How do I display a UITabBar that isn't part of the root of my UINavigationController? 【发布时间】:2011-04-01 18:08:33 【问题描述】:

我有一个应用程序,其中有几个设置屏幕需要遍历,包括选择数据集。一旦用户选择了一个数据集,他们就会看到一个带有标签栏的屏幕。

我必须按如下方式进行设置:

UINavigationController 作为主根。 一个UITabBarController 在打开数据集时被推入UINavigationController。 (此时导航栏已隐藏。) 每个标签都有自己的UINavigationController

这工作得相当好,除了当用户打开数据集时有一个明显的中断。我无法提供一个看起来像操作系统的后退按钮来返回以选择不同的数据集。这意味着用户需要关闭应用才能切换数据集(这并不可怕,因为出于安全原因,我们不支持多任务处理)。

如何让用户更容易选择不同的数据集?

【问题讨论】:

【参考方案1】:

Apple 警告您不要在 UITabBarController 类参考中将 UITabBarController 用作 UINavigationController 堆栈的一部分:

部署标签栏界面时,您必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面永远不应安装为另一个视图控制器的子级。

而是将标签栏控制器设为您的根视图控制器,并将您的“数据集选择”导航控制器作为模式视图控制器呈现在标签栏控制器之上。添加工具栏或其他界面以选择新的数据源。

交替只显示选项卡栏控制器,在没有选择数据源时为每个选项卡呈现一些合理的内容,并使用其中一个选项卡(或“更多”选项卡下的选项)来控制数据源选择。

【讨论】:

以上是关于如何显示不属于我的 UINavigationController 根目录的 UITabBar?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IDE 中让 CMake 显示不属于任何二进制目标的标头?

如何覆盖私有方法并快速调用超级?

ASP.NET MVC / C#:如何显示属于另一个控制器的部分视图数据

如何在 django 中列出用户不属于的所有组?

如何计算值,如果它们属于单独的类别和组

<UINavigationController: *****> 开始/结束外观转换的不平衡调用