#ios #swift #uicollectionview
#iOS #swift #uicollectionview
Вопрос:
Каждая ячейка представляет собой структуру, содержащую переменную: numberOfRegistration .
Если пользователь нажимает на эту ячейку, numberOfRegistration будет 1.
Взаимодействие с пользователем ячейки будет отключено, если счетчик = 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 — это массив, содержащий структуры.
Ответ №1:
Вам нужно
struct hourSlot{
var hoursService:String
var isDisable:Bool = false
var numberOfRegistration:Int = 0 {
didSet {
if numberOfRegistration >= 5 {
isDisable = true
}
}
}
}
Когда вы измените numberOfRegistration
, это будет отражено isDisable
, и вы сможете перезагрузить этот indexpath таблицы для обновления
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)])
Комментарии:
1. Подождите, мне нужно что-нибудь перезагрузить, чтобы применить изменение? (Потому что это не работает)
2. Это может быть глупый вопрос, но что мне нужно перезагрузить и как это сделать?
3. проверьте редактировать, если вы это сделаете
didSelectRowAt
, а затем перезагрузите там см. Редактировать
Ответ №2:
Попробуйте это:
let hourSlot = hoursArray[indexPath.item]
hourSlot.disable()
if hourSlot.isDisable{
cell.isUserInteractionEnabled = false
}
Чтобы изменить isDisable, вам необходимо вызвать метод disable(). И затем вы можете проверить его переменную.
Комментарии:
1. Я предполагаю, что это должно быть
isDisable
вместоisDisableCell
so Я изменил его, но это все равно не сработало