У меня есть UITableView, который я настроил для динамического роста в зависимости от содержимого, установив:
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
Мой UITableView состоит из headerView и bodyView, в которые я вставляю другие подвиды после настройки.
Я настроил свои ячейки со следующим rx:
viewModel
.map { $0.cellViewModels }
.bind(to: tableView.rx.items(cellIdentifier: "MyCell", cellType: MyCell.self)) { [unowned self] (row, viewModel, cell) in
cell.viewModel = viewModel
// Tried adding the following with no luck:
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
.disposed(by: disposeBag)
метод viewModel ячейки вызывает метод setup() с его didSet следующим образом:
var viewModel: CellViewModel? {
didSet { setup() }
}
В моей настройке я добавляю подвид к bodyView моей ячейки в зависимости от некоторых других факторов. т.е. я могу добавить картинку, немного текста и т.д.
Проблема в том, что когда я добавляю свое подпредставление в bodyView моей ячейки, высота ячейки остается исходной высоты, которая была в xib, и не меняет размер в этой точке, чтобы приспособить новое представление. Я пытался вызвать self.layoutIfNeeded()
после добавления подвида, но безуспешно. Как я могу изменить размер своей ячейки после добавления в нее подвида?
UITableView
использует ограничения для определения желаемой высоты ячейки, поэтому без ограничений изменение размера не произойдет. - person tomahh   schedule 19.09.2018