我有UITabBarController
的两个标签共享数据。第一个选项卡负责生成和更新第二个选项卡使用的数据数组。
我在标签之间共享数据的原始方法有效。
------UIViewController
---UITabBarController
------UIViewController
使用上面的方法,我从第一个标签中访问了数据数组:
let pointsViewController = self.tabBarController?.viewControllers?.first as! ShowPointsViewController
tableHeaders = pointsViewController.tableHeaders
ShowPointsViewController是第一个标签
以下是我的问题:
当我将第一个UIViewController
嵌入UINavigationController
然后尝试使用下面的代码访问我的数据数组时,我收到运行时错误,因为.first...
之后的代码返回为nil。我知道我错误地访问了这个,获得相同结果的正确方法是什么?
let pointsViewController = self.tabBarController?.viewControllers?.first?.navigationController?.topViewController as! ShowPointsViewController
答案 0 :(得分:0)
self.tabBarController?.viewControllers?.first?
是您的navigationController
,因此您在导航控制器上调用.navigationController
,返回nil
。
要解决此问题,请从通话中删除.navigationController
:
let pointsViewController = self.tabBarController?.viewControllers?.first?.topViewController as! ShowPointsViewController