ios - 如何在按下时隐藏标签栏并在返回时显示标签栏

标签 ios swift uiviewcontroller segue tabbar

我要

View Controller 1:显示标签栏

View Controller 2:显示标签栏

View Controller 3:未显示标签栏。

我写了

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

// prepareForSegue in view controller 3,
let upcoming = segue.destinationViewController as! viewcontroller2
self.hidesBottomBarWhenPushed = true

当我从 View Controller 1 转到 View Controller 3 时,标签栏没有显示。然后,我从 View Controller 3 转到 View Controller 2,显示了选项卡栏。 但是当我在 View Controller 2 中点击返回时,标签栏显示在 View Controller 3 中。 self.hidesBottomBarWhenPushed = true 对我来说没有意义。但是,我不知道我应该怎么做才能解决这个问题。有什么建议么?谢谢。

enter image description here

最佳答案

隐藏标签栏的方法是 - 在你插入下一个 View Controller 的地方这样做:

self.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(controllerToPush, animated: true) 
self.hidesBottomBarWhenPushed = false

这将确保标签栏对于推送的 View 是隐藏的,并且当您弹出时该栏将再次显示。没有后退按钮逻辑,没有 viewDidLoad 或类似的东西,没有别的。这应该足够了。

同样适用于 objective-c

现在 ( 21/02/2018 ) 您还可以在 Storyboard 中为您不想显示底栏的每个 Controller 检查选项 。这将有助于清理代码,并且您不需要在您推送的 Controller 中设置任何内容。 enter image description here

关于ios - 如何在按下时隐藏标签栏并在返回时显示标签栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35425134/

相关文章:

ios - SWRevealViewController 在 ViewController 之间切换

ios - iOS 10.3文本语音转换可在模拟器上运行,但不能在设备上运行

ios - UITableViewController 仅在离开并返回 UITableViewController 后才在页面顶部留下空间

ios - 如何快速打开 TableView 到选定的详细 View

ios - 在 UIScrollView 中并排定位 UIViewControllers

ios - swift : UITextField is hidden by Keyboard

ios - Swift中使用自定义分段控件时CollectionCell数据显示问题

ios - 如何让一个 block 运行一次,但每次我启动 viewController 时?

ios - 在 Core Data 中,NSManaged 对象的 URI 属性类型应该用于什么?

ios - 如何通过segue发送多个变量