添加子视图后,UITableViewCell高度不会更新

时间:2018-09-04 19:24:45

标签: ios swift uitableview

我有一个要添加子视图的UITableViewCell。但是,在添加子视图之后,单元格的高度仍报告自添加子视图之前的旧高度。

    // Setting up using rx, calling cell.setup()
    viewModel
        .map { $0.viewModels }
        .flatMap(ignoreNil)
        .bind(to: tableView.rx.items(cellIdentifier: "TableViewCell", cellType: TableViewCell.self)) { (row, viewModel, cell) in
            cell.viewModel = viewModel
            cell.setup()
        }
        .disposed(by: disposeBag)

// Cell setup in my UITableViewCell class
private func setup() {
     let threeTileView = TileView(frame: bodyView.bounds)

      // Bodyview is a view within the cell
      bodyView.addSubview(threeTileView)
    }

bodyview在屏幕外滚动时也消失了,因为我猜测将子视图添加到我的单元格时存在布局问题。我的tableview无法识别添加到bodyView的视图,而仅将其他视图注册到我的单元格中

1 个答案:

答案 0 :(得分:1)

这里

 let threeTileView = TileView(frame: bodyView.bounds)

frame-layout不会更新tableCell的高度,您必须使用自动布局,因为bodyView的边界尚未正确计算

//

bodyView.addSubview(threeTileView)
threeTileView.translatesAutoresizingMaskIntoConstraints = false   
NSLayoutConstraint.activate([ 
    threeTileView.leadingAnchor.constraint(equalTo: bodyView.leadingAnchor),
    threeTileView.trailingAnchor.constraint(equalTo: bodyView.trailingAnchor),
    threeTileView.topAnchor.constraint(equalTo: bodyView.topAnchor),
    threeTileView.bottomAnchor.constraint(equalTo: bodyView.bottomAnchor) 
])