iOS:将数据包装在导航控制器中时,将数据传递给模态VC
我有一个VC,我正在演示,但是VC被包装在iOS:将数据包装在导航控制器中时,将数据传递给模态VC,ios,swift,casting,uiviewcontroller,uinavigationcontroller,Ios,Swift,Casting,Uiviewcontroller,Uinavigationcontroller,我有一个VC,我正在演示,但是VC被包装在UINavigationController中。为了演示连接到我的VC的导航控制器,我在脚本中添加了一个标识符,如下所示: if let nvc = self.storyboard?.instantiateViewController(withIdentifier: "EditTaskNavController") { self.present(nvc, animated: true){ success(true) }
UINavigationController
中。为了演示连接到我的VC的导航控制器,我在脚本中添加了一个标识符,如下所示:
if let nvc = self.storyboard?.instantiateViewController(withIdentifier: "EditTaskNavController") {
self.present(nvc, animated: true){
success(true)
}
}
这是很好的。
当我试图将数据传递给VC时,问题就出现了。因为nvc是导航控制器,所以我尝试使用nvc.rootViewController
获取vc,但得到错误:类型为“UIViewController”的值没有成员“rootViewController”
。如果我打印出nvc
,我会发现它实际上是一个UINavigationController
。我假设发生此错误是因为我使用了instanceeviewcontroller
从情节提要获取导航控制器,但我不明白为什么它打印为UINavigationController
我也试着把nvc演成?TaskEditViewController但是nvc是导航控制器,而不是vc,所以这不起作用
最终,我希望在以模态方式呈现之前将数据传递给我的VC:
vc.detail=“示例”
你知道怎么做吗?你需要将
实例化控件
的结果转换成合适的类型,作为你在情节提要中设置标识符的vc类型,因为它返回类型为UIViewController
的通用对象,所以将它转换成UINavigationController
,同样的情况也适用于需要浇铸的属性topViewController
if let nvc = self.storyboard?.instantiateViewController(withIdentifier: "EditTaskNavController") as? UINavigationController, let top = nvc.topViewController as? TaskEditViewController {
top.someProperty = /* some value */
self.present(nvc, animated: true) {
/* some code */
}
}
我得到的错误
类型为“UIViewController”的值没有成员“topViewController”