исчезает проблема cell.accessoryType - PullRequest
0 голосов
/ 13 июля 2009

Я установил пользовательский UITableViewCell из кода. В моей ячейке у меня есть «UITableViewCellAccessoryDisclosureIndicator». При выделении ячейки она становится синей, а аксессуар становится белым. Так что все хорошо.

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

На прошлой неделе все работало нормально, но я просто не могу понять, что вызвало эту проблему внезапно. Я ничего не вижу, когда делаю 'hg diff', поэтому надеялся, что кто-нибудь направит меня к возможному решению. Если вам нужен конкретный код, пожалуйста, дайте мне знать.

Я использовал пример кода быстрой прокрутки atebits и провел большую его настройку, но основы (и выделенный BOOL) остались прежними.

PS. В моем коде я также заметил, что UITableViewCell не остается выделенным, когда создается новое представление. Я заметил, что в собственном примере кода Apple ячейка подсвечивается при нажатии на новое представление, и, возвращаясь к табличному виду, ячейка остается подсвеченной до тех пор, пока табличное представление не будет сдвинуто обратно на место. Есть идеи здесь? Thx.

Ответы [ 3 ]

1 голос
/ 13 июля 2009

Я просто решил эту проблему для себя (это А.М.)

Попробуйте, ради аргумента, удалить метод LayoutSubviews из вашей ячейки. Я нашел, что это наносит ущерб вспомогательным взглядам. В итоге я удалил этот метод из своих ячеек и разместил элементы в методе инициализации.

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

Если вы переопределите «layoutSubviews», вам нужно позвонить

[super layoutSubviews];

перед вашими пользовательскими элементами макета.

0 голосов
/ 13 июля 2009

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

  1. Получение события касания в ячейке табличного представления
  2. Ячейка выделяет (подсвечивает синим цветом)
  3. Нажмите новый контроллер
  4. Любые действия на новом контроллере
  5. Вставьте новый контроллер
  6. Ячейка отменяет выбор (исчезает с синего на белый)

Если это не происходит для вас, вы, вероятно, вызываете метод UITableView deselectRowAtIndexPath:animated: - это метод, отвечающий за отмену выбора ячеек в табличном представлении программным способом. Убедитесь, что в вашем коде нет дополнительных вызовов этого метода.

Что касается потери индикатора Disclousre, убедитесь, что источник данных вашего табличного представления не изменяется во время нажатия или всплывающего окна контроллера представления. Если источник данных изменится на другой объект, который не включает UITableViewCellAccessoryDisclosureIndicator в свои сгенерированные ячейки, вы не увидите его, когда обновляете таблицу, нажимая / выдвигая представление, даже когда эта ячейка подсвечена. (Может оказаться полезным с диагностической точки зрения отобразить таблицу, подождать немного, а затем позвонить [tableView reloadData] и посмотреть, исчезнут ли ваши дополнительные индикаторы.)

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