iPhone - UITableView не вызывает метод didSelectRowAtIndexPath в 3.0 SDK

У меня есть приложение для iPhone, которое отлично работает с версией SDK 2.x. Когда я обновился до 3.0, метод didSelectRowAtIndexPath больше не вызывается, поэтому действие, когда пользователь выделяет строку, не выполняется. Это настраиваемый UITableViewCell, который находится в отдельном от UITableView пике. И источник данных, и делегат данных правильно подключены в Interface Builder, и если я скомпилирую его до версии 2.21, он заработает. В версии 3.0 щелчок по строке ничего не делает.

В этом вопросе упоминается аналогичная проблема, но упоминается еще один первый респондент. это берет щелчок. У меня нет методов первого респондента, подключенных к ячейке или таблице.

Как сделать так, чтобы таблица работала правильно в 2.x и 3.0? В настраиваемой ячейке есть несколько меток и изображение, и я просто хочу иметь возможность щелкнуть строку и показать детали для этой конкретной строки.


person Tai Squared    schedule 30.06.2009    source источник
comment
И вы уверены, что для свойства allowedSelection установлено значение YES?   -  person pix0r    schedule 30.06.2009
comment
Да, для свойства allowSelection в UITableView установлено значение YES. При щелчке по строке она выделяется на секунду, затем возвращается к обычному (невыделенному), но метод didSelectRowAtIndexPath в контроллере представления не вызывается.   -  person Tai Squared    schedule 30.06.2009
comment
Вы проверяли, работает ли willSelectRowAtIndexPath?   -  person Ron Srebro    schedule 30.06.2009
comment
Если вы переопределяете методы обработки событий (касания, выбор, выделение и т. Д.) В подклассе ячейки, убедитесь, что вы перенаправили их в super. Возможно, 3.0 использует стандартные методы обработки событий для ячеек, а 2.2 каким-то образом их обходит.   -  person Daniel Dickison    schedule 07.07.2009


Ответы (2)


Возможно, вам не слишком понравится этот ответ ...

Некоторые вещи, которые работали в 2.2, не работают в 3.0 (вы это уже знаете). Некоторые API изменились и т. Д.

Некоторые вещи, однако, отличаются, потому что они вообще не должны были работать (согласно Apple).

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

Мой совет:

Во-первых, проверьте соединения с наконечником. Возможно, у вас отсутствует соединение, которое позволяет избежать проблем с 2.2, а с 3.0 - нет.

Затем создайте тестовое приложение с простым табличным представлением и посмотрите, сможете ли вы заставить его работать. Если это так, вам следует начать добавлять сложности из вашего кода в тестовое приложение, пока оно не сломается.

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

person Corey Floyd    schedule 30.06.2009
comment
Я закончил тем, что создал новый наконечник, скопировал элементы управления и таким же образом перемонтировал их. Это сработало. Я провел различие файлов xib, и единственное существенное отличие в новом было этой строкой: ‹string key = IBCocoaTouchPluginVersion› 3.0 ‹/string› Я не знаю, почему это не было добавлено XCode, когда я сохранил старую xib с версией 3.0. Кажется, это единственная разница, и теперь xib работает правильно. - person Tai Squared; 04.08.2009
comment
Спасибо, Кори, ты прав! У меня была такая же проблема с новым контроллером TableView в 4.x. Оказывается, у меня была некорректная розетка на панели инструментов, которая была подключена неправильно. После того, как я удалил ссылку на выход в пике моего TableViewController, начал вызываться didSelectRowAtIndexPath. - person ; 06.04.2011

У меня была такая же проблема. Я часами пробовал все, что вы можете себе представить. Самое смешное, что в конечном итоге это не было проблемой с моим кодом.

Я использую Objective Resource, и после обновления до версии 1.0.1 проблема исчезла. Проверьте все свои сторонние библиотеки и убедитесь, что вы используете последнюю версию, чтобы убедиться, что у вас есть изменения 3.0.

person Randy Simon    schedule 06.07.2009