Как отключить взаимодействие пользователя определенного CollectionViewCell с условием, которое обновляется за клик - PullRequest
0 голосов
/ 09 апреля 2019

Каждая ячейка - это структура, которая содержит переменную: numberOfRegistration.

Если пользователь щелкает эту ячейку, numberOfRegistration будет + 1.

Взаимодействие пользователя с ячейкой будет отключено, если counter = 5 или более.

Я как-то придумал это, но это не сработало.

struct hourSlot{
    var hoursService:String
    var numberOfRegistration:Int = 0
    var isDisable:Bool = false
    mutating func disable(){
        if numberOfRegistration >= 5{
            isDisable = true
        }
    }
}

и в cellForItemAt:

var isDisableCell = hoursArray[indexPath.item].isDisable
if isDisableCell{
    cell.isUserInteractionEnabled = false
}

Примечание: hoursArray - это массив, состоящий из структур.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вам нужно

struct hourSlot{
    var hoursService:String
    var isDisable:Bool = false
    var numberOfRegistration:Int = 0 {
        didSet {
            if numberOfRegistration >= 5 {
                isDisable = true
            }
        }
    } 
}

Когда вы измените numberOfRegistration, оно будет отражено на isDisable, затем вы можете перезагрузить этот указатель пути таблицы, чтобы обновить

var isDisableCell = hoursArray[indexPath.item].isDisable
if isDisableCell{
  cell.isUserInteractionEnabled = false   
} 
else {
  cell.isUserInteractionEnabled = true
}

Илив ближайшее время

cell.isUserInteractionEnabled = !(hoursArray[indexPath.item].isDisable)

Перезагрузка после каждого изменения

collectionView.reloadItems(at: [IndexPath(item:changedRow, section: 0)])
0 голосов
/ 09 апреля 2019

Попробуйте это:

let hourSlot = hoursArray[indexPath.item]
hourSlot.disable()
if hourSlot.isDisable{
    cell.isUserInteractionEnabled = false
}

Чтобы изменить isDisable, необходимо вызвать метод disable (). И тогда вы можете проверить его переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...