Скрыть UITableView, установив высоту строки в 0? - PullRequest
4 голосов
/ 29 ноября 2011

Я только что унаследовал код, который скрывает / показывает строки в UITableView, используя метод делегата heightForRowAtIndexPath и возвращая высоту 0 для «скрытых строк».

Код работает, но меня беспокоит, что это может быть чревато непредвиденными осложнениями. Может ли кто-то или ослабить мои опасения, или дать веские причины, по которым это может вызвать проблемы (я не смог найти проблем с первоначальным тестированием).

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

Ответы [ 3 ]

0 голосов
/ 06 декабря 2011

Я делаю то же самое в коде, над которым я только что работал.Меня не устраивает разное поведение для разных настроек табличного представления.
Альтернатива в моем случае более сложная (модель, которая приспосабливается к тому, что видно или нет).
Пока я добавляю комментарий // HACKна нем и документируем несколько особенностей.
Вот что я обнаружил (проверено на iOS 5.0):

  1. Set tableView.rowHeight = 1;Ноль даст ячейке с нулевой высотой (как возвращается tableView: tableView heightForRowAtIndexPath :) некоторую высоту по умолчанию.
  2. Вы должны иметь разделитель ячеек.Если ничего не выбрано, то высота по умолчанию присваивается строкам с нулевой высотой.Высота 1 включена в разделитель.

Если ваш код работает по-другому, было бы интересно узнать, как он настроен.

0 голосов
/ 12 марта 2014

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

Несколько вещей, на которые мне пришлось обратить внимание в iOS 7.1, это то, что очень сжатый текст по-прежнему появляется, даже когда высота ячейки = 0, поэтому мне нужно было удалить текст ячейки в этом случае.Кроме того, я изменил размер separatorInset ячейки, поскольку он также отображался.

0 голосов
/ 29 ноября 2011

Было бы удобнее добавлять и удалять строки между двумя вызовами beginUpdates и endUpdates, но я не понимаю, почему этот метод 0-высоты не должен работать.

Если нет никаких UI-артефактов, то есть (например, кнопка Удалить , отображающая переполнение следующей ячейки).

...