将数据传递给“未知”视图控制器

将数据传递给“未知”视图控制器

问题描述:

我有许多视图控制器,遍布在许多故事板上。将数据传递给“未知”视图控制器

当只知道viewcontroller标识符时,有什么方法可以将数据传递给viewcontroller。

的视图控制器标识符和故事板名称从plist中读取,并且的ViewController装载这样的:

let storyboard = UIStoryboard(name: plistdata.storyboard, bundle: nil) 
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier) 
navigationController?.pushViewController(vc, animated: true) 

由于我不能投射的视图控制器作为适当的类,我不能设置数据。可以在课堂上从一个字符串铸造,像

let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier) as! ClassFromString("MyDestinationViewController") 

或者会是一个更好的办法有数据模型跟踪哪些视图 - 控制被推,并尽快取回在目标视图 - 控制所需的数据它加载?

当你不知道某个东西的类时,但你仍然希望能够跟它交谈,那就是一个协议。如果您的每个匿名视图控制器类都采用MyProtocol,并且MyProtocol要求使用takeData方法,则您可以将vc转换为MyProtocol并调用takeData,而不再提供有关此视图控制器的类别的更多信息。

我认为最好的方法是Segue ...因为Segue创建了ViewController的Array,所以很容易推送,弹出和发送数据。