TabBar + 多个Navigation 可能产生的问题
需求: 在主界面显示TabBar,在子界面隐藏TabBar。【TabBar和Navigation都是原生的】
问题:当每个TabBar页签都绑定NavigationController时(如图),会产生这样的问题:当进入一个子界面,此时TabBar正常隐藏,单击Home键,或者切换到其他App,再回来,可能TabBar又显示了,如果没显示,可以回到上个界面(即主界面),再到其他子界面去,多切换几下,应该会出现我说的问题。我个人认为这是苹果iOS自身的Bug。
我的解决方案:
1、对于主界面上的Controller:
override func viewWillAppear(animated: Bool) {
tabBarController?.tabBar.hidden = false
}
2、对于二级界面的Controller:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.onAppDidEnterBackground), name: UIApplicationDidEnterBackgroundNotification, object: nil)
func onAppDidEnterBackground() {
tabBarController?.tabBar.hidden = true
}
2016.10.14更新
上面的第一点中,更好的做法是在二级界面的View Controller的Layout 中把Hide Bottom Bar on Push勾上。
但是上面的第二点是解决本案问题的重点!
如您有更多更好的解决方案,请勿私藏,跟大伙一起分享,谢谢!