Swift尝试为同一索引路径出列多个单元格,这是不允许的

时间:2018-03-09 21:42:04

标签: swift tableview

我有一个tableView,其中包含各种不同的单元格,其中textLabel为每1秒增加一个数字。我没有每隔0.1秒重新加载tableView或可见单元格,而是反映出更改文本会更有效,但是当我尝试这样做时,应用程序会因问题标题中给出的错误而崩溃。这是我的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! OwnedBusinessCell

    cell.textLabel?.text = ""

    return cell

}

调用我的函数的计时器:

func scheduledTimerWithTimeInterval(){
    reloadTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.reloadTV), userInfo: nil, repeats: true)
}

我的“尝试”更改文字的功能:

@objc func reloadTV() {

    for myIP in (tableView.indexPathsForVisibleRows)! {
        let cell = tableView(tableView, cellForRowAt: myIP)
        cell.textLabel?.text = increasingVariable
    }

}

完成错误:

  

由于未捕获的异常而终止应用   'NSInternalInconsistencyException',原因:'试图出队   多个单元格用于相同的索引路径,这是不允许的。如果你   真的需要比表视图请求更多的单元格出列,   使用-dequeueReusableCellWithIdentifier:方法(没有索引   路径)。单元标识符:单元格,索引路径:{length = 2,path = 0 - 0}'

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

@ViewChild('myCanvas') canvasRef: ElementRef;
  constructor()

是一个表视图数据源方法,并不打算直接调用, 这是你在

做的
 this.ctx = this.canvasRef.nativeElement.getContext('2d');
         this.chart = new Chart(this.ctx, {....})

如果你想要一个特定的单元格,那么问表格视图,而不是 数据来源:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

或更简单:

    let cell = tableView(tableView, cellForRowAt: myIP)