我想将一些数据传递给嵌入在导航栏中的ApplicationsViewController,因此出现错误:无法转换'UINavigationController'类型的值
我无法理解如何实现相同的功能。非常感谢您的帮助。谢谢。
答案 0 :(得分:3)
原因是您无法将数据直接传递到ApplicationViewController
,因为InboxViewController
的目的地是UINavigationController
。
因此,首先您需要访问UINavigationController
,然后再从堆栈访问ApplicationsViewController
。
尝试以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToApplications" {
if let navigation = segue.destination as? UINavigationController, let applicationVC = navigation.topViewController as? ApplicationsViewController {
applicationVC.id = "RGB"
}
}
}
答案 1 :(得分:0)
传递数据应用程序视图控制器时,该控制器是UINavigationController的rootviewController。您应该给定导航控件的名称,并键入强制转换为UINavigationController作为目标viewcontroller。 获取作为应用程序视图控制器的rootviewController并分配id的值
这是代码如何为Application ViewController分配值
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "navigationSegue" { // segue of navigationVC
let navVc = segue.destination as! UINavigationController
let appVc = navVc.viewControllers.first as! ApplicationsViewController
appvc.id = "RGB"
}
}