tableViewCell
包含viewController,在tableView完成布局视图后计算高度。所以我需要通过调用tableView
方法触发heightForRowAtIndexPath
再次请求行的高度。
我尝试了setNeedsLayout
,但它不起作用,系统不会调用heightForRowAtIndexPath
方法。
reloadData
或reloadRowsAtIndexPaths
不是一个好选择,因为它会重新加载所有单元格,以及内置到单元格中的所有viewControllers,以及当viewController完成布局过程和{{1}时调用时,viewDidLayoutSubviews
将再次调用,因此它是一个无限循环。
我正在测试reloadData
空更新操作。有时会触发tableView.beginUpdates() tableView.endUpdates()
,有时则不会。
答案 0 :(得分:0)
heightForRowAtIndexPath:
是协议UITableViewDelegate
的一部分,在您执行时会被调用:
[tableView reloadData];
setNeedsLayout
是UIView
的方法,会导致视图重绘,但不会触发tableView
更新自身。
答案 1 :(得分:0)
您可以在UIView中测试setNeedsDisplay,这将重绘视图。但setNeedsLayout用于布局子视图(位置和大小)。如果重绘,大小将从委托的功能中获得。