我的应用程序有问题。我一辈子都无法弄清楚如何解决它。如下。
我试图在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都会更新。因此,从某种意义上说,我认为它的工作应该正常进行,但是我在这里缺少一些关键的东西。如果有人知道我该怎么做,或者给我一些提示,将不胜感激。
编辑
我设法解决了这个问题,并将最终给出答案!
答案 0 :(得分:0)
您可以通过添加新属性来实现
var selectedIndexPath: IndexPath?
然后通话:
tableView.reloadData()
您不应在didSelectRowAt方法中调用tableView.cellForRow方法。