将数据传递给 "unknown" viewcontroller
Passing data to "unknown" viewcontroller
我有很多 viewcontroller,分布在许多情节提要中。
在只知道 viewcontroller 标识符的情况下,是否有任何方法可以将数据传递给 viewcontroller。
viewcontroller 标识符和故事板名称是从 plist 中读取的,viewcontroller 是这样加载的:
let storyboard = UIStoryboard(name: plistdata.storyboard, bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier)
navigationController?.pushViewController(vc, animated: true)
由于我无法将 viewcontroller 转换为正确的 class,因此我无法设置数据。 class 可以从字符串中转换出来吗,比如
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier) as! ClassFromString("MyDestinationViewController")
或者让数据模型跟踪正在推送的 viewcontroller 并在加载后立即在目标 viewcontroller 中获取必要数据是否是更好的方法?
当您不知道某物的 class,但无论如何您都希望能够与其对话时,这就是协议的用途。如果你的每个匿名视图控制器 classes 都采用 MyProtocol,并且如果 MyProtocol 需要一个 takeData
方法,那么你可以将 vc
转换为 MyProtocol 并调用 takeData
没有有关 class 这个视图控制器是什么的更多信息。
我认为最好的方法是 Segue...因为 Segue 为您的 ViewController 制作数组,因此很容易推送、弹出和发送数据。
我有很多 viewcontroller,分布在许多情节提要中。
在只知道 viewcontroller 标识符的情况下,是否有任何方法可以将数据传递给 viewcontroller。
viewcontroller 标识符和故事板名称是从 plist 中读取的,viewcontroller 是这样加载的:
let storyboard = UIStoryboard(name: plistdata.storyboard, bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier)
navigationController?.pushViewController(vc, animated: true)
由于我无法将 viewcontroller 转换为正确的 class,因此我无法设置数据。 class 可以从字符串中转换出来吗,比如
let vc = storyboard.instantiateViewController(withIdentifier: menuItem.identifier) as! ClassFromString("MyDestinationViewController")
或者让数据模型跟踪正在推送的 viewcontroller 并在加载后立即在目标 viewcontroller 中获取必要数据是否是更好的方法?
当您不知道某物的 class,但无论如何您都希望能够与其对话时,这就是协议的用途。如果你的每个匿名视图控制器 classes 都采用 MyProtocol,并且如果 MyProtocol 需要一个 takeData
方法,那么你可以将 vc
转换为 MyProtocol 并调用 takeData
没有有关 class 这个视图控制器是什么的更多信息。
我认为最好的方法是 Segue...因为 Segue 为您的 ViewController 制作数组,因此很容易推送、弹出和发送数据。