在Tableview Swift中仅在一个单元格中更改标签

时间:2019-03-18 14:31:43

标签: ios swift uitableview

我的应用程序有问题。我一辈子都无法弄清楚如何解决它。如下。

我试图在tableview的每个单元格中更改2个标签文本。 标签为MODE,标签为TIME。

我正在从Arduino发送一个字节数组,其中包含要显示的数据。我从Arduino一步一步地发送了此消息,以查看它在tableview中的显示效果如何。一切正常。但是,当我尝试发送具有不同MODE和TIME的不同字节数组时,它将更改所有先前的单元格。而不是仅使用正确的模式和时间更新新单元格。

这是我的tableview代码:

UI表格视图数据源

 @IBOutlet weak var recieveTableView: UITableView!

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     return recievedArrays.count
 }

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cell = tableView.dequeueReusableCell(withIdentifier: "RecieveCell", for: indexPath) as! RecieveTableCell
     cell.contentView.backgroundColor = cell.isSelected ? UIColor.darkGray : UIColor.white

     cell.rowNumber.text = "\(indexPath.row + 1)." //You have to + 1 ,because cells are zero based.
     cell.modeLabel.text = "\(recievedModeType)"
     cell.timeLabel.text = "\(String(message))μs"

     return cell
 }

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     print("touched")
     if let cell = tableView.cellForRow(at: indexPath) as? RecieveTableCell {
         cell.contentView.backgroundColor = UIColor.darkGray
     }
 }

recipedModeType 是MODE,消息是TIME。

我有一个在应用程序接收字节时运行的函数。因此,每当我发送不同类型的字节数组时,recievedModeType都会更新。因此,从某种意义上说,我认为它的工作应该正常进行,但是我在这里缺少一些关键的东西。如果有人知道我该怎么做,或者给我一些提示,将不胜感激。

编辑

我设法解决了这个问题,并将最终给出答案!

1 个答案:

答案 0 :(得分:0)

您可以通过添加新属性来实现

var selectedIndexPath: IndexPath?

然后通话:

tableView.reloadData()

您不应在didSelectRowAt方法中调用tableView.cellForRow方法。