微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – UISplitview:从appDelegate访问UITabBarController

我需要访问UITabBarController,以及来自appDelegate的第二个子视图.

Storyboard with UISPlitViewCOntroller as root

这是我在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是零.如果我从storyboard中删除UINavigation控制器,则可以使用以下命令轻松访问UITabBarController:

let tabController = splitViewController.viewControllers.first as! UITabBarController

访问UITabBarController的子控制器的正确方法是什么,其中UISplitView是根?

解决方法

最后我找到了解决方案.我必须使用导航控制器的“childViewControllers”,如下所示:

let splitViewController = self.window!.rootViewController as! UISplitViewController
let leftNavController = splitViewController.viewControllers.first as! UINavigationController
let tabController  = leftNavController.childViewControllers.first as! UITabBarController
let viewControllers : Array = tabController.viewControllers!
print("viewControllers \(viewControllers)")

现在我可以轻松访问任何viewControllers并从appDelegate运行他们的方法:-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐