返回UINavigationController时如何隐藏UITabBar
Posted
技术标签:
【中文标题】返回UINavigationController时如何隐藏UITabBar【英文标题】:How to hide UITabBar when going back in UINavigationController 【发布时间】:2019-03-21 12:31:51 【问题描述】:我有三个视图控制器:
FeedController(UITabBar
可见)
PostController(UITabBar
已隐藏)
UserController(UITabBar
可见
我使用以下代码从 FeedController 到 PostController:
let postVC = PostController()
postVC.hidesBottomBarWhenPushed = true
pushViewController(postVC, animated: true)
postVC.hidesBottomBarWhenPushed = false
然后,从 PostVC 到 UserVC:
let userVC = UserController()
userVC.hidesBottomBarWhenPushed = false
pushViewController(userVC, animated: true)
效果很好。除了导航到帖子时,它会在任何地方显示UITabBar
。但是,当我从帖子中转到用户配置文件 (UserController) 时,就会出现问题。它按预期在配置文件上显示UITabBar
,但是当我向后导航(使用UINavigationController
中的后退按钮)时,UITabBar
仍然可见。当我从 userVC 回到 postVC 时,我希望它再次被隐藏。
有什么办法可以做到吗?
【问题讨论】:
【参考方案1】:在您的帖子视图控制器中尝试:
override func viewWillDisappear(_ animated: Bool)
postVC.hidesBottomBarWhenPushed = true
它会在视图即将消失时调用它,但在它出现时不会调用它,因此当您返回时它应该隐藏。
【讨论】:
这太棒了,完全符合我的需要。一直在玩 viewWillAppear 和 viewWillDisappear,但我一直在使用另一个 viewController(例如,从 userVC 的 willDisappear 更改 postVC)。太好了,非常感谢! @PennyWise 很高兴听到!我发现自己多次陷入与您类似的情况,而答案总是在休息或做其他事情时出现!想想当你真正专注的时候很容易陷入寻找错误的地方,祝你好运! 我担心一开始我有点太兴奋了。当我实现它时,一切似乎都正常,但是,如果我从 userVC 转到另一个 viewController,它也会隐藏 tabBar,而它也应该再次显示。所以我目前正在寻找一种方法,只在我确定点击后退按钮时才显示它,到目前为止,没有运气。 @PennyWise 是您制作的后退按钮、导航栏后退按钮还是其他? @PennyWise 首先想到的是,例如,如果您制作了它的按钮,您可以创建一个变量var backButtonPressed = false
并在您的按钮代码中将其设置为 true 并在那里设置您的关闭功能,然后在viewWillDissapear 你只需要if backButtonPressed == true
然后隐藏tabBar,如果它们不是真的,然后不隐藏就返回。听起来对吗?以上是关于返回UINavigationController时如何隐藏UITabBar的主要内容,如果未能解决你的问题,请参考以下文章
返回UINavigationController时如何隐藏UITabBar
UINavigationController 应用程序在单击“返回”按钮时崩溃
为啥在 UINavigationController 应用程序中单击返回上一屏幕时有时会丢失导航项?
如何隐藏 UINavigationController 中的“返回”按钮?