如何在选项卡式应用程序上加载另一个视图控制器而不丢失选项卡

Posted

技术标签:

【中文标题】如何在选项卡式应用程序上加载另一个视图控制器而不丢失选项卡【英文标题】:How to load another View Controller on Tabbed application Without losing the tab 【发布时间】:2016-05-31 13:17:10 【问题描述】:

我有一个用 Objective-c 编码的 Tab Bar 应用程序。我拥有的选项卡视图之一是 TableView。 What I'm trying to do is, when a cell of this TableView is selected, the app takes the user to another view, but this view isn't on the tab menu, and I don't want to lose the tab menu when出现此视图。

有可能吗?如何?在网上找不到太多内容。

【问题讨论】:

你想在同一个 UIViewController 中显示 UIView 吗? 你需要使用容器视图!或者构建你自己的标签栏控制器! 我想展示一个 UIViewController 但不想丢失标签栏 如果将带有表格视图的视图控制器放入导航控制器,则可以推送带有新视图的控制器。 2 选项要么在顶部推送一个新的 UiViewcontroller,假设您在该选项卡中有一个 UINavigationController。或展示一个模态视图控制器 【参考方案1】:

只需将导航控制器嵌入到该选项卡的具有 tableview 的视图控制器中。

所以你的视图层次应该像标签栏控制器 - 导航控制器 - 视图控制器(标签) - 细节视图控制器

您可以通过选择 viewcontroller 来嵌入导航控制器,然后从菜单中选择编辑器,然后嵌入导航控制器。

希望这会有所帮助:)

【讨论】:

如何将 viewcontroller(tab) 链接到 detailviewcontroller?我点击 viewcontroller(tab) 持有的“控制”拖到 detailviewcontroller 并选择(显示详细信息),但它取代了整个标签栏 我做到了!而不是选择“显示详细信息”,您必须选择“显示”“感谢您的帮助!【参考方案2】:

如果您要显示单个视图控制器,那么您可以尝试通过 将新视图控制器的视图添加为 subView 到当前视图控制器的视图

例如:

newVC.view.frame = self.view.frame;
newVC.view.frame.size.height = self.view.frame.size.height - HEIGHT_OF_TAB_BAR;
[self.view addSubview:newVC.view];

如果有更多的视图控制器正在进一步添加,那么 使用标签栏控制器下的导航控制器也将 工作。

参考:How to implement tab bar controller with navigation controller in right way

【讨论】:

以上是关于如何在选项卡式应用程序上加载另一个视图控制器而不丢失选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个选项卡上的场景切换或弹出选项卡式应用程序中第一个选项卡的第二个场景?

使用swift在选项卡式视图中的导航栏上添加按钮

如何在保留选项卡栏的同时将子视图控制器添加到选项卡式视图控制器?

在选项卡式应用程序的导航视图中为表格添加背景图像

Android Studio - 选项卡式活动如何将片段重置为默认视图?

带有多个表视图的选项卡式 ios 应用程序