滚动tableview时文本正在替换

时间:2017-01-18 07:58:48

标签: ios swift uitableview

我需要增加特定行的减量标签值。我正在使用以下方法,它正在工作,但当我滚动表视图时,值将替换为其他行。

就像我在屏幕上根据设计显示两行所以在滚动时,第一行的标签值将替换为第四行标签等等。

@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)"
    }
}

2 个答案:

答案 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。否则,我们不需要。