UITableView didSelectRow не вызывается - PullRequest
0 голосов
/ 27 июня 2018

В приложении для 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.

1 Ответ

0 голосов
/ 27 июня 2018

Извините, но похоже, что Xcode доставил мне действительно тяжелые времена. Я просто удалил ViewController из раскадровки и снова создал его с нуля. Также создан новый файл для ВК, и теперь все работает так, как ожидалось. Иногда нужно удалить всю свою работу и начать все заново, и в данном конкретном случае ... это было.

Я действительно не могу сказать, в чем может быть причина; но, похоже, что-то запуталось в файле раскадровки. По крайней мере, это мое лучшее предположение.

Потрачено впустую некоторое время ... В любом случае, спасибо за посещение ...

...