Изменение метки только в одной ячейке в Tableview Swift - PullRequest
0 голосов
/ 18 марта 2019

У меня проблема с моим приложением. Я не могу на всю жизнь понять, как это исправить. Это выглядит следующим образом.

Я пытаюсь изменить 2 текста меток в каждой ячейке таблицы. Это метка MODE, а метка TIME.

Я отправляю байтовый массив из Arduino, который содержит данные для его отображения. Один за другим я отправляю это из Arduino, чтобы увидеть, как оно хорошо отображается в виде таблицы. Все работает. Но когда я пытаюсь отправить другой байтовый массив с другим РЕЖИМОМ и ВРЕМЯМ, он изменяет ВСЕ предыдущие ячейки. Вместо того, чтобы обновлять только новые ячейки, указав правильный режим и время.

Вот мой код просмотра таблицы:

Источник данных табличного интерфейса пользователя

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

recceiveModeType - РЕЖИМ, а сообщение - ВРЕМЯ.

У меня есть функция, которая запускается, когда приложение получает байты. Таким образом rec recModeType обновляется каждый раз, когда я отправляю байты разных типов. Так что я чувствую, что он работает так, как должен, но я упускаю что-то важное здесь. Если у кого-нибудь есть идея, как мне это сделать, или дайте мне несколько советов, которые будут очень признательны.

EDIT

Мне удалось это исправить и в конце концов даст ответ!

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете сделать это, добавив новое свойство

var selectedIndexPath: IndexPath?

и чем звонить:

tableView.reloadData()

Вы не должны вызывать метод tableView.cellForRow в методе didSelectRowAt. * ​​1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...