从 UITableViewController 推送到 UIViewController 时,底部标签栏消失并保持黑色

Posted

技术标签:

【中文标题】从 UITableViewController 推送到 UIViewController 时,底部标签栏消失并保持黑色【英文标题】:bottom tabbar disappears and leave black when pushed from UITableViewController to UIViewController 【发布时间】:2019-03-22 07:56:46 【问题描述】:

在我的用例中,我想在离开 UITabbarController 时隐藏底部标签栏。

我正在使用

let vc = storyboard?.instantiateViewController(withIdentifier: tableData[indexPath.row]["vcIdentifier"]!)
self.hidesBottomBarWhenPushed = true
self.show(vc!, sender: self)

它有点工作,因为推送的视图控制器底部没有标签栏。但是,只要我点击导航,“发送者”视图控制器的底部标签栏就会消失并留下黑色区域。

如果您需要有关任何事情的更多信息,请告诉我。提前非常感谢!

【问题讨论】:

【参考方案1】:

如果推送的视图控制器底部没有标签栏,可以添加视图控制器代码的这个生命周期。

override func viewWillAppear(_ animated: Bool) 
    super.viewWillAppear(animated)
    tabBarController?.tabBar.isHidden = true
    


override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)
    tabBarController?.tabBar.isHidden = false

【讨论】:

您好,Ozdil 感谢您的回答。我发现在目标视图控制器上使用 .hidesBottomBarWhenPushed 也可以解决问题。【参考方案2】:

如果您想在进入下一个屏幕时隐藏标签栏,您可以使用 segue。它会自动隐藏它。

【讨论】:

后来我意识到这种行为是由一行不应该存在的代码引起的。我无意中设置了目标视图控制器的 tabbar.isHidden。

以上是关于从 UITableViewController 推送到 UIViewController 时,底部标签栏消失并保持黑色的主要内容,如果未能解决你的问题,请参考以下文章

推送到 navigationController 时 UITableViewController 静态单元格不出现

将 UITableViewController 推送到导航堆栈时看不到导航栏

将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS

UITableViewController 和 NavigationController

UItableviewController 不加载数据

当转到另一个 UITableViewController 时 UITableViewController 冻结