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