一尘不染

推/回时隐藏/显示标签栏。迅速

swift

答案:
在每个视图控制器中使用self.tabBarController?.tabBar.hidden而不是hidesBottomBarWhenPushed来管理视图
控制器是否应显示选项卡栏。

override func viewWillAppear(animated: Bool) {
    self.tabBarController?.tabBar.hidden = true/false
}

我想要

视图控制器1:应显示选项卡栏

视图控制器2:应显示标签栏

视图控制器3:不应显示选项卡栏。

视图控制器4:不应显示选项卡栏。

我写

// prepareForSegue in view controller 1, 
    let upcoming = segue.destinationViewController as! viewcontroller3
    upcoming.hidesBottomBarWhenPushed = true

// in view controller 3,
    func clickOnButton(button: UIButton) {
        self.hidesBottomBarWhenPushed = false
        self.performSegueWithIdentifier("viewController2", sender: self)
        self.hidesBottomBarWhenPushed = true
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "viewController2" {
            let upcoming = segue.destinationViewController as! viewController2
            upcoming.hidesBottomBarWhenPushed = false
        }
    }
// prepareForSegue in view controller 2
    let upcoming = segue.destinationViewController as! viewController4
    upcoming.hidesBottomBarWhenPushed = true

如果1-> 3,则返回1。

如果1-> 3-> 2则返回3并返回1。

如果2-> 4,则返回2。

如果1-> 3-> 2-> 4,则返回2,不显示选项卡栏。想知道为什么。任何
建议或hidesBottomBarWhenPushed的一些解释,因为它混淆了我
很多


阅读 202

收藏
2020-07-07

共1个答案

一尘不染

顾名思义,hiddenBottomBarWhenPushed仅在
需要时隐藏底部栏,而不会取消隐藏bottomBar。您可以执行以下操作使其生效:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.tabBar.hidden = true/false
}

或者干脆把self.tabBarController?.tabBar.hidden = true/false
prepareForSegue

但是我不建议您这样做,因为bottomBar突然弹出会很奇怪,用户会以为它们突然回到了
rootViewController而不是。

用户应始终知道他们在应用中的位置以及如何到达下一个目的地。

2020-07-07