collectionView didSelectItemAtIndexPath перестал работать после перехода на Xcode 10.2 - PullRequest
0 голосов
/ 05 апреля 2019

Я только что обновил свой Xcode до версии 10.2 после того, как установил последнюю версию MacOS Mojave.

Xcode попросил меня перенести Swift с 3.0 на более поздние версии, поэтому я решил обновить его до Swift 5.0.

После нескольких небольших изменений, касающихся изменения грамматики, приложение запущено и работает.Однако я обнаружил, что collectionView didSelectItemAtIndexPath перестал работать в симуляторе или устройстве, что означает, что при нажатии на элемент в collectionView соответствующий метод didSelectItemAtIndexPath больше не вызывается.

Я проверял изменения в коде много разЯ почти уверен, что грамматические изменения не связаны с влиянием collectionViews.Я могу сделать несколько трюков с TagGesture, но мне интересно, в чем здесь проблема.

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

Что здесь происходит?

обновление:

Мой старый код вообще не имеет изменений после миграции, он выглядит так:

func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {
...
}

Я обновил в соответствии с предложением ответчиков.Тем не менее, все еще не работает.

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}

(я даже не трогал xib-файл, все делегаты верны.)

Ответы [ 2 ]

4 голосов
/ 23 апреля 2019

Ознакомьтесь с этим вопросом и ответьте: https://stackoverflow.com/a/55393950/1943064

По сути, в swift 5 есть ошибка, связанная с реализацией необязательных методов протоколов, которые реализуются суперклассом. Если необязательный метод отсутствует в суперклассе, он также идентифицируется как отсутствующий в подклассе.

Я попал туда после прохождения этой темы. Это был настоящий виновник для меня. Также имейте в виду, что внесение каких-либо изменений в файл при сборке с помощью dev может случайно решить проблему (например, добавление shouldSelectItemAt, которое предлагали некоторые люди. Я сделал это, и он исправил его, а затем удалил и продолжал работать. Мой Тем не менее, сборка circleCI все еще была нарушена в 100% случаев.

3 голосов
/ 05 апреля 2019

Метод делегата, вероятно, был переименован.Убедитесь, что вы реализуете:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

Также дважды проверьте, что вы все еще устанавливаете контроллер в качестве делегата для UICollectionView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...