Я использую AutoLayout для компоновки ячеек моего tableView. Когда содержимое некоторых элементов, которые у меня есть в ячейке, пусто, я хотел бы скрыть ячейку.Как скрыть ячейку и удалить из потока в объективе-C?
Моя проблема заключается в том, что если я помечать клетку быть скрыта с:
cell.hidden = YES;
то «пространство», используемое ячейкой (высота которого вычисляется в heightForRowAtIndexPath) по-прежнему существует, но неактивно. По сути, ячейка скрыта, но она все еще является частью «потока».
Если я попытаюсь установить высоту в ноль на ячейке, я хочу спрятать в heightForRowAtIndexPath, тогда я получаю исключение, потому что автомат не может удовлетворить все ограничения.
Есть ли простой способ скрыть ячейку и удалить ее из «потока» на дисплее или мне нужно обновить мои ограничения на ячейку, чтобы обеспечить высоту 0 для достижения этого?
Спасибо, Nicolas
Я считаю, что первый из них не путь в моем случае, когда число строк предопределенные для представления различных полей содержимого объекта (например, обзор, адрес, улица, ...). Если одно из этих полей пуст, я пытаюсь скрыть ячейку. Ваше второе решение будет работать (хотя вам придется удалить ограничения на cell.contentView, а не непосредственно на ячейку). Проблема в том, что я повторно использую ячейки, поэтому мне нужно повторно обновить ограничения после этого. Это кажется немного грязным для чего-то, что выглядит довольно простой задачей. – nicolasccit
Вы можете переключиться на ручной макет для своих ячеек таблицы или добавить свойство 'itemIsHidden' в свои элементы модели данных и иметь' numberOfRowsInSection: 'вернуть номер, в котором это свойство' == NO'. В любом случае UITableView не имеет встроенного механизма для скрытия ячеек таблицы, которые вы говорите, чтобы показывать. –
Большое спасибо за помощь. Я просто попробовал другой способ, который мне нравится. Я изменил свое ограничение на гибкость, поэтому перешел из: @ "V: | -padding - [_ titleLabel] - [_ descriptionLabel] -padding- |" to: @ "V: | - (> = 0, <= padding) - [_ titleLabel] - (<= padding) - [_ descriptionLabel] - (> = 0, <= padding) - |". Таким образом, высота на 0 приемлема на основе ограничения. Это звучит как разумный подход к вам? – nicolasccit