У меня есть магазин как UICollectionView.У меня есть система подсветки текущего мяча, который будет использовать пользователь.Там клетки могут принадлежать или не принадлежать.Когда я нажимаю на не принадлежащее, если у пользователя нет денег, чтобы купить его, ничего не происходит, и если это происходит, для isSelected должно быть установлено значение true.Проблема в том, что когда я нажимаю на заблокированный элемент, он все равно подсвечивается, но ни одна из точек останова не сработает внутри оператора if, чтобы проверить, куплен ли он.У меня есть набор didSet на isSelected для выделения ячейки.
Это мой класс делегата
Это сокращенная версия функции didSelectItemAt:
//I have an array of structs, called balls, to hold values of each item.
indx = indexPath.item//Universal variable that can be accessed in both this class and the cell class
let cell = collectionView.cellForItem(at: indexPath) as! Shop1CollectionViewCell
balls[indexPath.item].owned = cell.clickedOn(price: balls[indexPath.item].price, index: indexPath.item)
//saves the value to know if you own that item and can select it whenever if you buy it it returns true if not, false
if balls[indexPath.item].owned == true && cell.owned == true{
//This will only pass if the item has been bought, so you can not select items that you don't own
if ogCell.isSelected{
ogCell.isSelected = false
//deselects the saved cell, last selected from last time, that is saved from userdefaults
}
currentItem = indexPath.item//reference for the current item that is selected
cell.isSelected = true
//this will trigger the highlight() function in didSet
lastCell = cell//reference to last cell selected
lastIndex = indexPath.item//index of that cell
}
Это несколькомоего класса ячеек:
//This is what is executed when the isSelected is changed.
override var isSelected: Bool{
didSet{
if self.isSelected{
highlight()
}else{
unHighlight()
}
}
}
//This is what is executed when the cell is clicked on:
if money >= price && !owned{
money -= price
owned = true
isSelected = true
}else if owned == false{
owned = false
isSelected = false
currentItem = lastIndex
lastCell.highlight()
}
Когда я щелкаю по ячейке, я создал способ отменить выбор выделенной ячейки, если она не принадлежит, но этот процесс отменяет предыдущий выбор, поэтому я остаюсь сничего не выбрано.Я хотел бы знать, почему подсвечивается неизвестная ячейка, даже когда отладка говорит, что она никогда не проходит через любую точку, для которой isSelected установлено в true.
Я могу добавить больше кода, если это необходимо, но весь другой код кажется ненужным.