Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:将数据包装在导航控制器中时,将数据传递给模态VC_Ios_Swift_Casting_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

iOS:将数据包装在导航控制器中时,将数据传递给模态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) }

我有一个VC,我正在演示,但是VC被包装在
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”