我需要从ViewController-B中读取ViewController-A中的数组,以便填充ViewController-B中的UIPickerView数据。我怎么能这样做?
我试过这个答案:
https://stackoverflow.com/a/31574620/7127489
但我不知道为什么我可以实例化我的ViewController-B,因为它将我填充的数组传递给另一个类中的空数组。
有什么想法吗? 非常感谢你!
答案 0 :(得分:1)
您可以使用代理人传递数据(这里有许多代表团的例子)或here 或者你可以这样做:
如果在navigationController中:
if let navController = self.tabBarController?.viewControllers?[1] as? UINavigationController, let yourController = navController.viewControllers[0] as? yourVC{
yourArray = yourController.array
}
如果不在navigationController中:
if let yourController = self.tabBarController?.viewControllers?[1] as? yourVC{
yourArray = yourController.array
}
答案 1 :(得分:0)
如果你的控制器-B被控制器-A扫描,你应该在控制器-B中声明一个属性,并在segueing时为控制器-B分配你需要的值。
答案 2 :(得分:0)
设置一个静态变量,将数组存储在' ViewControllerA'中,然后您可以使用ViewControllerB
从ViewControllerA.array = [1,2,3]
访问它。
您可以将静态变量设置为static var array = [Int]()
答案 3 :(得分:0)
您将在标签栏中知道ViewControllerB的索引。 在ViewControlleB中声明一个数组。喜欢
var pickerData = [String]() // use appropriate type depending upon need.
只要ViewControllerA中的数据获得更新,就像这样
更新ViewControllerB中的数据 let vcb = self.tabBarController?.viewControllers?[index of ViewControllerB] as? ViewControllerB
vcb?.pickerData = newData