В приложении для iOS у меня есть ViewController, у которого есть ContainerView, в котором находится ViewController (скажем, VC2), используя Embed Segue. Этот VC2 владеет UITableView, а его источник данных и делегат установлены на VC2, а также соответствует протоколам UITableViewDataSource и UITableViewDelegate.
Теперь ячейки отображаются отлично, поэтому источник данных кажется хорошим. Но когда я пытаюсь выбрать строку, ничего не происходит, поэтому возникает проблема с делегатом.
Однако методы-делегаты willDisplayCell и shouldHightlightRowAt действительно вызываются. И я реализовал этот метод только для проверки правильности настройки делегата. И нет, я NOT реализовал метод didDeselectRowAt, что является распространенной ошибкой.
В IB табличное представление владеет двумя динамическими ячейками-прототипами, свойство Selection установлено на Single Selection , а Style установлено на Plain . Оба UITableViewCells имеют Стиль , установленный на Пользовательский и Выбор установлен на По умолчанию .
Почему метод didSelectRowAt не вызывается? Я проверил свойство isEditing, которое имеет значение false; редактирование не имеет значения в моем случае.
это мой метод didSelect:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didSelectRowAt (indexPath.row)")
}
Я использую Swift 4.