从 AppDelegate、Swift 导航到 TabBarController 内的特定视图控制器
Posted
技术标签:
【中文标题】从 AppDelegate、Swift 导航到 TabBarController 内的特定视图控制器【英文标题】:Navigate to a specific View Controller inside a TabBarController from AppDelegate, Swift 【发布时间】:2018-03-13 01:36:11 【问题描述】:我有一个 TabBarController 有两个标签 Cases & Settings
我想将用户带到像这样嵌套的 CaseSummaryTVC TabBarController > Cases (NavigationController, Storyboard Id = 'tvcNav' ) > CasesTVC (TableViewController) > CaseSummaryTVC (TableViewController, Storyboard Id = 'CaseSummaryTVC')。
我在 AppDelegate 中使用以下代码,这会将我带到“CaseSummaryTVC”,但底部没有显示 TabBar。
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let navController = mainStoryboard.instantiateViewController(withIdentifier: "tvcNav") as! UINavigationController
let caseSummaryTVC = mainStoryboard.instantiateViewController(withIdentifier: "CaseSummaryTVC") as! CaseSummaryTVC
navController.pushViewController(caseSummaryTVC, animated: true)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
【问题讨论】:
【参考方案1】:看起来您正在将窗口的 rootViewController 设置为“navController”,它似乎没有包含在 UITabBarController 中。
我不确定您的故事板是什么样的,但听起来您在那里正确设置了视图层次结构。
您可以执行以下操作之一:
1) 删除程序化视图控制器实例化,让情节提要负责将 rootViewController 设置为 UITabBarController。
2) 像您在此处对其他视图控制器所做的那样,以编程方式实例化 UITabBarController,并确保将其设置为将 navController 作为其选项卡之一。
【讨论】:
我同意第一个建议,OP 需要在界面构建器或编程路由之间进行选择来处理根视图控制器,因为问题是 OP 推送到导航控制器的错误实例,这解释为什么标签栏被省略。以上是关于从 AppDelegate、Swift 导航到 TabBarController 内的特定视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
在 AppDelegate iOS 中单击 FCM 推送通知时导航到特定选项卡 - Swift
在 Swift 中从 AppDelegate 加载嵌入到 UINavigationController 的控制器