2015-03-31 4 views
0

Я использую функцию калибровки собственной калибровки, и она хорошо работает, пока я не хочу полностью скрыть ячейку. Я отошел от heightForRowAtIndexPath для этого и настройки я следующее:iOS 8 Самостоятельные размеры ячейки - разрешить нулевую высоту

override func viewDidLoad() { 
    self.tableView.rowHeight = UITableViewAutomaticDimension 
    self.tableView.estimatedRowHeight = 0 
} 

Однако, когда у меня нет текста для tableviewcell для визуализации я получаю следующее сообщение:

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

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

ответ

1

Я нашел решение.

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

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

tableView.beginUpdates() 
//-- You Table UI changes 
tableView.reloadData() 
tableView.endUpdates() 

Вы также можете заменить reloadData с reloadRowsAtIndexPaths быть конкретными строки для обновления, но мой экземпляр обязательно все строки должны быть обновлены.

0

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

numberOfRowsInSection 

и

cellForRowAtIndexPath 

Вы должны попробовать, чтобы добавить свойство, как «скрытый» в массиве содержимого ячейки, и проверить, когда вы загружать/перезагружать ваши данные. Это работает (конечно) все еще отлично с Autolayout.

+0

В настоящее время я использую скрытую правду/ложь без разницы. Он показывает пустое место на своем месте. Когда вы говорите об удалении ячеек, вы хотите удалить их из таблицы? Если это так, мне нужно будет воссоздавать их каждый раз, когда они не скрыты? – Gorilla3D

+0

Да - если они скрыты, вы не должны их загружать. Поэтому верните правильный подсчет всех видимых ячеек в numberOfRowsInSection и проверьте в cellForRowAtIndexPath, если текущая ячейка скрыта. – derdida

Смежные вопросы