答案:使用self.tabBarController?.tabBar.hidden而不是hidesBottomBarWhenpush在每个视图控制器中,以管理视图控制器是否应该显示标签栏。
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,标签栏不显示。想知道为什么。有什么建议或解释隐藏底部酒吧时推,因为它让我困惑了很多
x1c 0d1x的数据
7条答案
按热度按时间uemypmqf1#
顾名思义,hiddenBottomBarWhenPushed只在需要时隐藏底部栏,它不会取消隐藏底部栏。你可以这样做来让它工作:
字符串
或者将
self.tabBarController?.tabBar.hidden = true/false
放入prepareForSegue**但我不建议你这样做,因为如果bottomBar突然弹出会很奇怪,用户会认为他们突然回到rootViewController,而他们没有。
用户应该始终知道他们在应用中的位置以及如何到达他们的下一个目的地。
cgfeq70w2#
将hidesBottomBarWhenPushed属性添加到目标视图控制器,并设置为true。
带有标识符的推送VC示例:
字符串
kjthegm63#
这是我的两分钱。Swift 3/4/5:
方法1:(推荐)
字符串
方法二:
型
whlutmcx4#
在ViewController中添加此实现,您希望在推/弹出时隐藏/显示选项卡栏。它也将对所有下一个推送的视图控制器起作用。
字符串
0yg35tkg5#
Swift 5
字符串
x9ybnkn66#
It's Better to Fade Out than to Hide Away
(....我的,嘿嘿)
Swift 5:
另一种方法…是淡入淡出选项卡栏。并不是说这在战略上比其他任何一个更有利,比如那些需要
prepareForSegue
的,但它可以适应其他触发器。在任何情况下,设置选项卡栏Alpha动画可以避免在tabBar(UIView)上设置.isHidden时产生的刺耳的消失/出现效果,方法是淡入淡出。这是在任何VC中完成的,当VC被推入或加载时需要隐藏它,当VC被弹出或卸载时需要取消隐藏。这将不会打扰恢复标签栏,直到在navBar或等效的操作中按下后退按钮,这样当一个子VC被推到标签栏上时,标签栏将保持隐藏,这通常(但并不总是)是有意义的。
字符串
u0njafvf7#
在情节提要中,选择“推送时隐藏底部栏”