加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – UISplitview:从appDelegate访问UITabBarController

发布时间:2020-12-14 04:41:29 所属栏目:百科 来源:网络整理
导读:我需要访问UITabBarController,以及来自appDelegate的第二个子视图. 这是我在applicationDidEnterBackground中尝试过的: let splitViewController = self.window!.rootViewController as! UISplitViewControllerlet leftNavController = splitViewControlle
我需要访问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运行他们的方法:-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读