无法在 View Controller iOS Swift 中显示 TabBar

Posted

技术标签:

【中文标题】无法在 View Controller iOS Swift 中显示 TabBar【英文标题】:Unable to display TabBar in View Controller iOS Swift 【发布时间】:2018-02-11 03:10:59 【问题描述】:

收到推送通知后,我正在尝试导航到表格视图控制器 (ReportTVC)。我的故事板中视图控制器的层次结构如下所示。

TabBarController -> 导航控制器 (Storyboard ID: CasesNavController) -> TableViewController (CasesTVC) -> TableViewController (CaseSummaryTVC) -> TableViewController(ReportTVC)

ReportTVC 正按预期与导航控制器一起显示,但是当我导航回 CasesTVC 时,我应该有一个带有选项卡的 TabBar,但这不见了

有人可以告诉我如何解决这个问题吗?

在 AppDelegate.swift 中:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let navController = mainStoryboard.instantiateViewController as! UINavigationController

let reportTVC = mainStoryboard.instantiateViewController(withIdentifier: "ReportTVC") as! ReportTVC
reportTVC.obtainDoctorReport = true
reportTVC.caseId = caseId


navController.pushViewController(reportTVC, animated: true)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()

【问题讨论】:

使 UITabBarController 成为您的根视图控制器并推送导航控制器 【参考方案1】:

这里的问题是您将 NavigationController 设置为 rootViewController 您需要将 TabBarController 设置为 root。

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let navController = mainStoryboard.instantiateViewController(withIdentifier: "Nav") as! UINavigationController
let tabController = mainStoryboard.instantiateViewController(withIdentifier: "Tab") as! UITabBarController

let reportTVC = mainStoryboard.instantiateViewController(withIdentifier: "ReportTVC") as! ReportTVC
reportTVC.obtainDoctorReport = true
reportTVC.caseId = caseId

navController.pushViewController(reportTVC, animated: true)
tabController.setViewControllers([navController], animated: false)
self.window?.rootViewController = tabController
self.window?.makeKeyAndVisible()

您不应该忘记,您还需要在 TabBarViewController 中添加其他 ViewController。

【讨论】:

以上是关于无法在 View Controller iOS Swift 中显示 TabBar的主要内容,如果未能解决你的问题,请参考以下文章

iOS VC 推出另外一个背景透明的视图控制器(the content is displayed over another view controller’s content)

如何在 iOS 上正确使用 Container View Controller

《iOS Human Interface Guidelines》——Split View Controller

《iOS Human Interface Guidelines》——Container View Controller

iOS Swift:在同一个View Controller上进行过渡动画

《iOS Human Interface Guidelines》——Page View Controller