滚动tacbleview后丢失按钮选择

时间:2018-05-22 18:26:00

标签: ios uitableview

我有一个使用可重复使用的单元格的tableview。每个单元格都有一个标签和一个包含5个按钮的堆栈视图。问题是因为一旦我滚动单元格是可重复使用的,按钮的选择就会丢失。一旦用户滚动,确保按钮选择不会丢失的最佳方法是什么。

问题不在于捕捉按钮选择。只有滚动后的UI部分,所选的图像不是显示的图像,但是已经记录了该值。

1 个答案:

答案 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
   }
}

这种代码的和平并不是那么清楚,但我试图解释我的想法。