无法将数据传递到导航栏中嵌入的View Controller

时间:2018-10-24 05:52:42

标签: ios swift xcode

我正在尝试执行以下操作: enter image description here

我想将一些数据传递给嵌入在导航栏中的ApplicationsViewController,因此出现错误:无法转换'UINavigationController'类型的值

我无法理解如何实现相同的功能。非常感谢您的帮助。谢谢。

2 个答案:

答案 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"
        }
    }