无法在 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的主要内容,如果未能解决你的问题,请参考以下文章