这是我的应用程序的当前布局。如您所见,我有一个嵌入TabBarViewController的ViewController。您可以看到我在这两个底视图控制器中都有两个标签栏,但只显示了第一个标签栏。在推送segue之后的第二个视图控制器中,标签栏消失。为什么是这样?
我添加了第一个视图控制器的属性,它没有设置为在segue期间隐藏底栏,所以我很困惑为什么它会在segue之后消失。有任何想法吗?
答案 0 :(得分:1)
尝试设置self.tabBarController.tabBar.translucent = NO;在viewWillAppear
中答案 1 :(得分:1)
您需要将tabBar的根视图控制器包装在UINavigationController
中。所以你的UITabBarController
实际上会指向导航控制器。然后当您在该导航控制器中移动时,标签栏将保持不变。
要在您的应用程序中修复此问题,请在故事板中选择您的视图控制器,然后单击“编辑器” - > “嵌入” - > “导航控制器”。
这是一个视觉表现形式,我只是为了遇到这个问题的其他人而聚集在一起。如果删除下面显示的故事板中的“NavigationController”,则单击“First View”中的按钮时,该选项卡将消失。使用导航控制器,您将保持标签栏。希望这会有所帮助。
答案 2 :(得分:0)
您还可以尝试通过添加插座/操作来关闭视图。例如,我遇到了一个问题,我有一个TabBar视图控制器,需要在其中一个选项卡上的两个不同视图(ImageViews)之间进行切换,一旦我做了传统的segue,整个标签栏就消失了。我创建了以下“后退按钮”来清除视图:
@IBAction func backBtnPressed(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}
注意:重要的做法是清除视图,因为它们会加班加点并会降低应用的效果。
技术信息 https://developer.apple.com/reference/uikit/uiviewcontroller/1621505-dismiss
不确定这是否有帮助,但值得一提!