iOS 8 个自动调整大小的单元格 - 允许零高度

iOS 8 Self Sizing Cells - Allow Zero Height

我正在使用自动调整单元格大小的功能,在我想完全隐藏一个单元格之前它一直运行良好。我为此离开了 heightForRowAtIndexPath 并设置了以下内容:

override func viewDidLoad() {
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.estimatedRowHeight = 0
}

然而,当我没有要呈现的 tableviewcell 文本时,我收到以下消息:

Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead.

我真的只需要一种动态隐藏/显示内容的方法。我为此使用了静态表视图,所以也许我处理错了?

前段时间我遇到过类似的问题。我会使用动态单元格,并删除

中的隐藏单元格
numberOfRowsInSection

并在

cellForRowAtIndexPath

您应该尝试在您的单元格内容数组中添加一个 属性,例如 "hidden",并在您 load/reload 时检查您的数据。这(当然)仍然适用于 Autolayout。

我找到了解决方案。

首先,要使静态 table 正确使用自我调整大小,每个 table 单元格只能有一个标签。我试图将大量内容放入一个单元格中,但只有第一个标签会调整单元格的大小。我对每个单元格一个标签的规则可能是错误的,问题可能与约束/自动布局相关。我看过关于此的 WWDC 视频,我设置它的方式应该适用于我现有的约束,因为它们设置为单元格的 contentView。

其次,UI 更新需要结合开始和结束规则,以及重新加载。

tableView.beginUpdates()
//-- You Table UI changes
tableView.reloadData()
tableView.endUpdates()

您也可以将 reloadData 替换为 reloadRowsAtIndexPaths 以特定于要更新的​​行,但我的实例需要更新所有行。