无法将“UINavigationController”类型的值转换为 tabBarController
Posted
技术标签:
【中文标题】无法将“UINavigationController”类型的值转换为 tabBarController【英文标题】:Could not cast value of type 'UINavigationController to tabBarController 【发布时间】:2017-10-04 06:04:19 【问题描述】:我正在尝试将数据从一个 tabBarController 传递到第二个 tabBarController 但出现错误,我尝试了很多方法但数据没有传递
他们无论如何都要在选项卡之间传递数据吗?
我正在尝试使用此代码,但出现错误“无法将 'UINavigationController 类型的值转换为 CategoriesViewController”
enter code here
let barViewControllers = self.tabBarController?.viewControllers
let svc = barViewControllers![1] as! CategoriesViewController
svc.categoriesData = self.categoryProductsDict //shared model
【问题讨论】:
这样想:标签栏 -> 导航控制器 -> 你的控制器。所以你有了导航控制器,你需要循环来获取你的控制器。 【参考方案1】:let svc = (barViewControllers![1] as! UINavigationController).viewControllers[0]
我相信所有的标签视图控制器都嵌入了导航控制器。因此,当您从选项卡 viewController 访问 viewController 时,您将获得 UINavigationController。为了访问 VC,您必须在 NavigationController 的索引 0 处获取 viewControllers
更干净更安全的代码
if let vc = (self.tabBarController.viewControllers![0] as? UINavigationController)?.viewControllers[0] as? CategoriesViewController
//access your VC here
【讨论】:
以上是关于无法将“UINavigationController”类型的值转换为 tabBarController的主要内容,如果未能解决你的问题,请参考以下文章
ID:[...] 的 NSManagedObject 已失效
如何正确关闭作为模式呈现的 UINavigationController?
UINavigationController - 何时释放推送的视图控制器等