2016-02-17 3 views
4

У меня есть UITableView, в котором ячейки содержат ImageView и вложенные UITableView. Вложенная таблица может содержать переменное число ячеек и поэтому имеет переменную высоту (и она не прокручивается).Вложенный UITableView с переменной высотой в UITableViewCell + UITableViewAutomaticDimension

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

Как я могу сделать родительские ячейки таблицы одинаковыми по высоте, как их содержимое? Я уже установил ограничения между представлением содержимого ячейки и графикой/вложенной таблицей.

ответ

0

Я столкнулся с подобной проблемой при попытке реализовать вложенные таблицы. Я нашел два решения этой проблемы.

  1. Расчет высоты innerTableView и установка RowHeight от outerTableView к нему, выполнив следующие действия в этом cellForRowAtIndexPath

RowHeight = cell.innerTableView.contentSize.height

возвращение RowHeight в tableView: оцененныйHeightForRowAtIndexPath и tableView: heightForRowAtIndexPath

Это работало для меня, чтобы установить cellHeight внешнегоTableView в зависимости от внутреннего содержимого.

  1. Проверьте этот учебник. http://vuta.info/dynamic-uitableviews-height-with-auto-layout-in-swift/
-1

Совершено аналогичное сегодня. Вот что сработало для меня.

Также не нужно устанавливать UITableViewAutomaticDimension и не устанавливать свойство tableView.rowHeight.

Сначала отключить прокрутку во внутреннем виде таблицы.

innerTableView.isScrollEnabled = false 

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

scrolling disabled

Предположит, для каждой клетки:

  • высота изображения = 100
  • высота ячейки
  • внутреннего окна табличного = 30

Затем рассчитать высоту ячейки равна высоту изображений плюс количество клеток вложенных табличных таблиц, умноженное на размер ячейки в таблицеView (tableView: heightForRowAt), например:

// constant 
let imgHeight = 100 
let innerCellHeight = 30 

// inner cell count 
let dataSource = dataSources[indexPath.row] 
let innerCellsCount = dataSource.items.count 


return CGFloat(imgHeight + (innerCellsCount * innerCellHeight)) 

также реализует функцию tableView (tableView: expectedHeightForRowAt), поэтому прокрутка будет более гладкой, например, если внутренний вид таблицы не содержит ячеек, просто верните высоту изображения.

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