swift - 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"
}
笔记:
- NCMainAdmin 是导航控制器
- NCMenuAdmin 是 Navigation Controller 的第一个 View Controller
谢谢!
解决方案
要触发您的代码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"
}
推荐阅读
- node.js - 在节点中进行 TypeScript 编译后从相对路径读取/写入文件
- android - 带有导航组件的 startDestination 中的按钮返回
- python - python 为什么我不能从我刚刚创建的文件中读取?
- javascript - 询问用户问题,然后在 discord.js 嵌入中使用它
- c# - 跨平台 xamarin 表单
- java - 覆盖线程池中线程的中断方法
- vba - 如何使用 environ 功能避免其他人使用我的 Access DB
- c# - 如何为 ASP.NET WebForms、MVC 和 CORE 提供一个通用的 HttpContext
- mysql - 编写基于差异的日期查询的更好方法
- reactjs - 我无法在 React 中导入组件