推送视图控制器后如何保留 UITabBar

Posted

技术标签:

【中文标题】推送视图控制器后如何保留 UITabBar【英文标题】:How do I keep the UITabBar after pushing view controllers 【发布时间】:2018-06-18 21:18:38 【问题描述】:

所以,我的故事板上有以下结构。 TabBar item 2 就像一个“更多”选项卡,我想在推送新的视图控制器后保留底部的 TabBar(在本例中,推送紫色 VC)。

我在这里看到一些问题说我应该将 item 2 嵌入到导航控制器中。好的,如果我按下紫色 VC,底部栏会继续出现。我现在遇到的问题是橙色导航栏没有消失,蓝色导航栏没有出现。橙色的导航栏应该会出现,直到绿色的vc,按下紫色的vc后,导航栏应该会改变。我想要这个,因为如果我在紫色 VC 中,我想返回绿色 VC,但如果出现橙色导航栏,则返回按钮会返回灰色 vc。

gif 正在演示当前行为。 有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

删除项目2所属的Navigation Controller

现在您可以使用更改导航栏颜色

 self.navigationController?.navigationBar.barTintColor = UIColor.red  //choose the color of your liking

ViewControllerviewDidLoad 内。

【讨论】:

我需要转到标签栏控制器,因为它是一个选择屏幕,可以转到“主视图”,即标签栏。 不,我不想更改条形颜色。我想要的是,当我从绿色 VC 推紫色 VC 时,会出现后退按钮,它应该显示回绿色 VC。在当前行为中,当我在紫色 VC 中时,后退按钮会返回到灰色 VC 是的,移除导航控制器是可行的,但是当紫色控制器被按下时,底部的标签栏消失了。 我设法在紫色 vc 上添加代码:on view did load: self.tabbarController.navigationcontroller.isNavigationBarHidden = true 并且在另一个 vc 中我将其设置为 false【参考方案2】:

你必须写这样的代码--

1-目标c-

productDetail *obj=[[productDetail alloc] initWithNibName:@"productDetail" bundle:nil];

obj.hidesBottomBarWhenPushed = NO;

[self.navigationController pushViewController:obj animated:NO];

2-斯威夫特-

var obj = productDetail(nibName: "productDetail", bundle: nil)
obj.hidesBottomBarWhenPushed = false
navigationController?.pushViewController(obj, animated: false)

【讨论】:

没用。属性检查器上也有这个选项。

以上是关于推送视图控制器后如何保留 UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中向 UIView 添加第二个 UITabBar(控制器?)

如何将 UITabBar 项目连接到 IB 中的视图控制器

从嵌套在 UITabBarController 中的导航控制器推送视图控制器?

如何导航到推送通知上的视图控制器

在呈现模态视图时显示 UITabBar

UITabBar 模态视图控制器