UITableView didSelectRowAtIndexPath: не вызывается при первом нажатии - PullRequest
348 голосов
/ 21 января 2010

У меня проблема с UITableView's didSelectRowAtIndexPath.

Моя таблица настроена так, что когда я выбираю строку, она инициализирует новый контроллер представления и толкает его.

При первом нажатии любой строки в таблице метод не вызывается. Как только я выбираю другую строку, она начинает работать как обычно.

Я подтвердил это, установив точку останова на didSelectRowAtIndexPath. При добавлении NSLog к методу я вижу, что когда я выбираю вторую строку, которая, наконец, выдвигает новый контроллер представления, я вижу, что в консоли одновременно появляются два оператора журнала.

Есть предложения?

Ответы [ 14 ]

0 голосов
/ 05 июня 2019

Свифт 4,2

Отключение «Задержка задержки» в инспекторе атрибутов решило проблему.
После этого щелчки становятся плавными, и didSelectRowAt срабатывает немедленно.

XCode attributes inspector

0 голосов
/ 29 апреля 2019

В моем случае у меня был заголовок раздела UITableView с распознавателем жестов. Когда заголовок коснулся, он должен вставить несколько строк в этот раздел и анимировать вставку (например, раздел развернуть / свернуть). При первом раскрытии и нажатии метод делегата didSelectRow не был запущен. Для дальнейших нажатий и действий по развертыванию / свертыванию все работало как положено.

За ответ от @ Ayoub Nouri Я установил для cancellsTouchesInView значение false, и это решило проблему. tapGestureRecognizer? .cancelsTouchesInView = false

0 голосов
/ 21 декабря 2017

SWIFT 3

Ни один из других ответов не сработал в моем случае, для меня это было исправлено:

tableView.delaysContentTouches = false

0 голосов
/ 18 апреля 2017

didSelectRowAt функция не была вызвана в моем приложении при первом или втором нажатии ... Я пытался решить проблему, не мог найти никакого решения. Но вдруг я узнал, что я использовал изменение цвета view.animation ... Delegate метод не вызывался, пока анимация сохраняется

...