Swift 在类中的方法之间传递数据

Swift 在类中的方法之间传递数据,swift,Swift,我很难理解swift的基本机制。我能够找到有关如何在视图控制器之间传递数据的教程,但无法找到如何在视图控制器中的方法之间传递数据的教程 class CollectionViewController: UICollectionViewController{ var array = [String]() override func viewDidLoad() { super.viewDidLoad() array = ["item1", "item2", "item3"] } ove

我很难理解swift的基本机制。我能够找到有关如何在视图控制器之间传递数据的教程,但无法找到如何在视图控制器中的方法之间传递数据的教程

class CollectionViewController: UICollectionViewController{

 var array = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
array = ["item1", "item2", "item3"]
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell
print(array)
}
我试着用这个简化的例子来解释我在尝试什么。首先,我声明一个空数组,它可以在类的所有方法中使用,到目前为止还不错。但是,在viewdidload方法中为数组指定初始值后,在另一个方法中使用同一数组时,我无法保留此数据。在本例中,我想使用数组数据自定义集合视图中的单元格


我尝试将viewvdidload方法放在collectionview方法的作用域内,反之亦然。在不了解swift的工作原理的情况下,我无法进一步学习它。

在viewDidLoad方法的数组中插入值后重新加载集合视图

override func viewDidLoad() {
  super.viewDidLoad()
  array = ["item1", "item2", "item3"]
  self.collectionView!.reloadData()
}

您需要在声明属性时使用var,以便对其进行修改。var array=[String]@JoakimDanielson我的错,我在代码中使用了var,但它仍然不起作用什么不起作用?您的代码应该打印一个包含3项的数组,因为我缺少一行,谢谢!现在我可以将数组变量中的数据从viewdidload传递到collectionview方法。这是在类中的方法之间传递数据时通常要做的事情吗?在数组中插入值之前,将调用CollectionView委托方法。因此,您需要重新加载集合视图以再次调用委托方法。直接将值分配给数组会更容易,因此您不需要在viewDidLoad方法中重新加载数据。是,我认为OP应该学习如何从另一个视图控制器注入数据,如果他需要从表视图返回任何值,他需要学习如何创建视图控制器的委托