У меня есть меню магазина для моей игры в Swift.Я использую UICollectionView для хранения представлений для элементов.Перед покупкой их покрывает черное стекло, и становится ясно, когда они его покупают.Я храню данные о владении определенными предметами в классах клеток.Когда я прокручиваю вниз в scrollView, а затем возвращаюсь вверх после щелчка по ячейке.Ячейка, отличная от собранной, имеет класс очистки, а ранее выбранная ячейка снова становится черной.
import UIKit
class Shop1CollectionViewCell: UICollectionViewCell {
var owned = Bool(false)
var price = Int()
var texture = String()
@IBOutlet weak var glass: UIImageView!
@IBOutlet weak var ball: UIImageView!
func initiate(texture: String, price: Int){//called to set up the cell
ball.image = UIImage(named: texture)
if owned{//change the glass color if it is owned or not
glass.image = UIImage(named: "glass")
}else{
glass.image = UIImage(named: "test")
}
}
func clickedOn(){
owned = true//when selected, change the glass color
glass.image = UIImage(named: "glass")
}
}
Тогда у меня есть класс UICollectionView
import UIKit
class ShopViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
struct ball{
var price = Int()
var texture = String()
var owned = Bool()
}
var balls = Array<ball>()//This is assigned values, just taken off of the code because it is really long
override func viewDidLoad() {
super.viewDidLoad()
balls = makeBalls(
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return (balls.count - 1)
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! Shop1CollectionViewCell
cell.initiate(texture: balls[indexPath.item].texture, price: 1)
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! Shop1CollectionViewCell
cell.clickedOn()
}
}
Мне интересно, почему хранятся переменныев одном классе ячейки переключаются на другой.
Пожалуйста, спросите, нужно ли мне добавить дополнительную информацию или код.