Выберите строку только 1 раз - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть tableView с каналами для чата. Когда пользователь запускает приложение, мне нужно выбрать первый канал по умолчанию. Сначала я использовал willDisplay, и это работало, но теперь я решил обновить цвет для непрочитанных каналов (такая функция, как непрочитанные сообщения). Каждый раз, когда я звоню tableView.reloadData(), выбирается первый канал. selectRow не работает с willDisplay по некоторым причинам.

let index = self.tableView.indexPathForSelectedRow
self.tableView.reloadData()
self.tableView.selectRow(at: index, animated: false, scrollPosition: .none)

.

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row == 0 {
        tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
    }
}

Как выбрать первый канал только 1 раз, когда пользователь запускает приложение?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете попробовать это, вызвав метод didSelectRowAt

var isSelected = false

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if indexPath.row == 0 && !isSelected  {
      tableView(tableView,didSelectRowAt: indexPath)
      isSelected = true
    }
}

Другой вариант - поместить этот код внутрь viewWillAppear/viewDidAppear

if !isSelected {
    tableView.selectRow(at: IndexPath(row:0,section:0), animated: false, scrollPosition: UITableView.ScrollPosition.none)
    isSelected = true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...