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