从Swift中的其他类读取数组

时间:2017-08-01 09:47:15

标签: ios swift

我需要从ViewController-B中读取ViewController-A中的数组,以便填充ViewController-B中的UIPickerView数据。我怎么能这样做?

我试过这个答案:

https://stackoverflow.com/a/31574620/7127489

但我不知道为什么我可以实例化我的ViewController-B,因为它将我填充的数组传递给另一个类中的空数组。

有什么想法吗? 非常感谢你!

4 个答案:

答案 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'中,然后您可以使用ViewControllerBViewControllerA.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