【发布时间】:2016-02-21 13:35:58
【问题描述】:
我需要从 appDelegate 访问 UITabBarController,以及它的第二个子视图。
这是我在 applicationDidEnterBackground 中尝试过的:
let splitViewController = self.window!.rootViewController as! UISplitViewController
let leftNavController = splitViewController.viewControllers.first as! UINavigationController
let tabController = leftNavController.tabBarController! as UITabBarController
let controllers : Array = tabController.viewControllers!
print("viewcontrollers \(controllers)")
应用程序崩溃,抱怨 tabController 为 nil。如果我从情节提要中删除 UINavigation 控制器,则可以通过以下方式轻松访问 UITabBarController:
let tabController = splitViewController.viewControllers.first as! UITabBarController
访问 UITabBarController 的子控制器的正确方法是什么,其中 UISplitView 是根?
【问题讨论】:
-
为什么你有一个导航控制器后跟一个标签栏控制器?您能解释一下您希望应用的导航是什么样的吗?
-
对不起,我没有展示整个故事板。连接到 tabbarcontroller 的视图是 tableviews,它有一个 detailViewController (splitview detailviewcontroller)。如果我删除 UINavigationController,详细视图将不再具有带有不同按钮和后退按钮的导航栏。
标签: swift uitabbar appdelegate