iOS 8 Self Sizing Cells - 允许零高度

时间:2015-03-31 09:55:38

标签: xcode uitableview swift ios8 cell

我正在使用自我调整单元格功能,它可以很好地工作,直到我想完全隐藏单元格。为此,我离开了heightForRowAtIndexPath并设置了以下内容:

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

但是,当我没有tableviewcell的文本呈现时,我得到以下消息:

  

仅警告一次:检测到模糊限制的情况   为tableview单元格的内容视图建议高度为零。我们'再   考虑到无意识的崩溃和使用标准高度   代替。

我真的只需要一种动态隐藏/显示内容的方法。我正在使用静态tableview,所以也许我接近这个错误了?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。

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

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

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

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

答案 1 :(得分:0)

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

numberOfRowsInSection

并在

cellForRowAtIndexPath

您应该尝试在单元格内容数组中添加“隐藏”属性,并检查加载/重新加载数据的时间。当然,这对Autolayout仍然有用。