Это пример проекта на мой вопрос.https://github.com/KeDaQHR/TableViewCell.isSelected
В основном я установил:
tableView.allowsMultipleSelection = true
Затем я нажимаю кнопку Отменить выбор внизу, чтобы перезагрузить просмотр таблицы и сделать это:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if shoudSelect {
cell.setSelected(true, animated: true)
}
}
, которыйсделает все ячейки для выбора.Затем, если я коснусь ячейки, ни один из методов делегатов, таких как willSelectRowAt, didSelectRowAt, didDeselectRowAt, не будет вызван.
Если я заменим
cell.setSelected(true, animated: true)
на
tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)
Это будет работать нормально.Кто-нибудь знает, почему методы делегатов не реагируют в первом случае?Спасибо!