UICollectionViewCell, выполняющий операторы, если isSelected - истина, когда это никогда не - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть магазин как 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.

Я могу добавить больше кода, если это необходимо, но весь другой код кажется ненужным.

...