2017-10-04 50 views
0

我试图将数据传递给第二视图控制器没有成功,
这是我的代码:

如何以编程方式导航到视图控制器,并通过数据

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let vc = storyboard.instantiateViewController(withIdentifier: “secondVC") 
self.present(vc, animated: true, completion: nil) 

//The following solution as I checked in the previous questions doesn't work: 

vc.Var1InSecondViewController = self.var1 
vc.Var2InSecondViewController = self.var2 


它声称“与第二个视图控制器相关的“vc”没有'Var1InSecondViewController'的成员,尽管我在第二个视图控制器中创建了它。

您的帮助将不胜感激,谢谢。

+0

添加代码的第二个视图控制器,具有vc.Var1InSecondViewController – Krunal

+0

@Krunal的减速我在疑问,我已经做到了提及:“即使我没有在创建它第二个视图控制器“ – Yossi

+0

此问题的答案需要第二个视图控制器的类名称和第二个视图控制器中的变量的参数访问级别。看看Bharath的答案,这可能是正确的,但只有视图控制器类名缺失。 – Krunal

回答

2

你必须为以如下方式访问其属性来指定secondVC的类名,

相反的,

let vc = storyboard.instantiateViewController(withIdentifier: “secondVC") 

使用

let vc = storyboard.instantiateViewController(withIdentifier: “secondVC") as? YOUR_SECOND_VIEW_CONTROLLER_CLASS_NAME 

并执行任务的步骤在呈现视图控制器之前如下,

vc?.Var1InSecondViewController = self.var1 
vc?.Var2InSecondViewController = self.var2 
self.present(vc!, animated: true, completion: nil) 
+0

它工作!非常感谢你 ! – Yossi

+0

@Shlomi:欢迎,乐意帮忙:-) – Bharath

0

您可以使用此:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "yourSegue" { 
     if let firstViewController = segue.destination as? FirstViewController { 
      firstViewController.var1 = var1 
     } 
    } 
} 
} 
相关问题