首页 > 解决方案 > Swift:将数据从视图控制器传递到导航控制器

问题描述

我想将数据从视图控制器传递到另一个视图控制器,但它们之间有一个导航控制器,所以有一个“present”函数而不是“performSegue”。

 private func IniciarMainAdmin(){
    let mainAdmin = UIStoryboard(name: "Main", bundle: Bundle.main)
    guard let mainAdminNVC = mainAdmin.instantiateViewController(withIdentifier: "NCMainAdmin") as? NCMainAdmin else{
        return
    }
    present(mainAdminNVC, animated: true, completion: nil)
}

我已经尝试过使用此代码,但它对我不起作用:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destViewController = segue.destination as! NCMainAdmin
        let secondViewcontroller = destViewController.viewControllers.first as! NCMenuAdmin
        secondViewcontroller.adminUserData = "This is a test"
}

笔记:

谢谢!

标签: swiftviewcontrollernavigationcontroller

解决方案


要触发您的代码prepare(for,您需要创建从发送方 vc 到导航的 segue ,因此要么

 private func IniciarMainAdmin(){
    let mainAdmin = UIStoryboard(name: "Main", bundle: Bundle.main)
    guard let mainAdminNVC = mainAdmin.instantiateViewController(withIdentifier: "NCMainAdmin") as? NCMainAdmin else{
        return
    }
    let first = mainAdminNVC.viewControllers.first as! NCMenuAdmin
    first.adminUserData = "This is a test"
    present(mainAdminNVC, animated: true, completion: nil)
}

或者

self.performSegue(withIdentifier:"id",sender:nil)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destViewController = segue.destination as! NCMainAdmin
        let secondViewcontroller = destViewController.viewControllers.first as! NCMenuAdmin
        secondViewcontroller.adminUserData = "This is a test"
}

推荐阅读