在我的应用程序中,我通过设置UIViewController
属性来隐藏选项卡栏hidesBottomBarWhenPushed
.我不确定此行为是否设计,当我调用popToRootViewController
弹出所有视图控制器堆栈时,如果我之后推送相同的视图控制器,选项卡栏无法正确显示。甚至我在调用isHidden
后也尝试通过设置属性来显示标签栏popToRootViewController
但它也不起作用。奇怪的部分是,在选项卡栏消失后,我按下了相同的视图控制器,当我尝试通过使用手势弹出(滑动以弹出)来弹出视图控制器(不是popToRootViewController)时,我可以看到选项卡栏。虽然它在过渡完成后消失了。
仅供参考,这是逐步产生此行为的。
- 在两个选项卡上初始化选项卡栏和导航控制器。
- 推送视图控制器(
hidesBottomBarWhenPushed
为真)在一个选项卡的导航控制器上 - 通过调用
popToRootViewController
从导航控制器弹出所有视图控制器 4 通过在标签栏上设置selectedIndex
来更改选项卡索引控制器 - 推送相同的视图控制器
hidesBottomBarWhenPushed
属性如何详细工作以显示/隐藏选项卡栏?
我将在我的应用程序中讨论这个问题。
对于每个页面,我将编辑self.navigationController?.navigationBar.isHidden
和self.tabBarController?.tabBar.isHidden = false
,以保证tabBar和导航栏在viewWillAppear
中的状态。
样本
// In this viewController, I'll show the navigation bar and hide tab bar
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.isHidden = false
self.tabBarController?.tabBar.isHidden = true
}
导航栏和选项卡栏可以在您推送新视图控制器或弹出旧视图控制器时保持其上一个视图控制器的状态。因此,它将允许我们在每个视图控制器中设置,以根据需要控制和确保其状态。