添加子视图后,UITableViewCell不会调整大小

时间:2018-09-18 13:25:21

标签: ios swift uitableview rx-swift

我有一个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(),但是没有运气。向其添加子视图后如何调整单元格的大小?

1 个答案:

答案 0 :(得分:1)

您可以先致电tableView.beginUpdates(),然后再致电tableView.endUpdates()。之间没有任何东西。