我需要增加特定行的减量标签值。我正在使用以下方法,它正在工作,但当我滚动表视图时,值将替换为其他行。
就像我在屏幕上根据设计显示两行所以在滚动时,第一行的标签值将替换为第四行标签等等。
@IBAction func plusBtnAction(_ sender: UIButton) {
var cell:TableViewCell = self.tebleView.dequeueReusableCell(withIdentifier: "Cell")! as UITableViewCell as! TableViewCell
let indexPath = IndexPath(row: sender.tag, section: 0)
cell = (self.tebleView.cellForRow(at: indexPath) as? TableViewCell)!
if cell.tag == sender.tag {
print(sender.tag)
print(cell.countLbl.tag)
cell.countLbl.text = "\(Int(cell.countLbl.text!)! + 1)"
}
}
答案 0 :(得分:0)
请记住,每次需要显示新单元格时,重复使用单元格dequeueReusableCell
,所以这里发生的是第一行消失,重新显示时,您使用的是用于第4行。
解决这个问题的方法是在tableView(table,not teble :-)之外的数组中跟踪你的计数器。这样的东西......
var tableDataCounters : [Int] = []
// set up your data ...
cell.countLbl.text = "\(tableDataCounters[indexPath.row] + 1)"
答案 1 :(得分:0)
使用dequeueReusableCell(withIdentifier: )
的{{1}}方法,您最初会创建单元格,然后重新使用这些创建的单元格。由于这个原因,你正面临这个问题。由于您只有一行需要更改其文本,因此最好将该行的文本保存在外部。对于UITableView
,最好执行以下操作:
plusBtnAction
在上面的代码中,我们检查indexPath是否可见。如果是,则重新加载该特定indexPath。否则,我们不需要。