每个单元格都是一个包含变量的结构: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是一个包含结构的数组。
你需要
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)])
试试这个:
let hourSlot = hoursArray[indexPath.item]
hourSlot.disable()
if hourSlot.isDisable{
cell.isUserInteractionEnabled = false
}
为了更改isDisable,您需要调用disable()方法。然后你可以检查它的变量。