我有一个使用可重复使用的单元格的tableview。每个单元格都有一个标签和一个包含5个按钮的堆栈视图。问题是因为一旦我滚动单元格是可重复使用的,按钮的选择就会丢失。一旦用户滚动,确保按钮选择不会丢失的最佳方法是什么。
问题不在于捕捉按钮选择。只有滚动后的UI部分,所选的图像不是显示的图像,但是已经记录了该值。
答案 0 :(得分:0)
由于单元格是可重复使用的,您应该在Dictionary中保存按钮状态,然后在 cellForRow 中设置状态
它应该是这样的:
struct ButtonState {
var firstButtonSelected = false
var secondButtonSelected = false
}
var buttonStates = Dictionary<Int, ButtonState>()
// save state in buttonStates
func saveState(cellIndex: Int, buttonIndex: Int, state: Bool) {
var buttonState = buttonStates[cellIndex]
if buttonState == nil {
buttonState = ButtonState()
}
if buttonIndex == 0 {
buttonState.firstButtonSelected = state
} else if buttonIndex == 0 {
buttonState.secondButtonSelected = state
}
}
//set states in cell buttons
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let buttonState = buttonStates[cellIndex] {
cell.firstButton.selected = buttonState.firstButtonSelected
}
}
这种代码的和平并不是那么清楚,但我试图解释我的想法。