使用autolayout为表格视图单元格赋予0高度

时间:2016-02-08 20:42:59

标签: ios uitableview ios-autolayout

我的数据源数组中有一些虚拟对象。

我不想在屏幕上显示它们。我也无法从数据源数组中删除它们。

我正在使用适当的约束来获得动态单元格高度。

有没有办法可以使用AutoLayout为这些虚拟对象显示 0 height 的单元格?

2 个答案:

答案 0 :(得分:5)

您应该考虑如何不显示该单元格,而不是单元格高度= 0

如果你没有虚拟数据就无法复制你的数据源(因为它太大了?)

  

顺便说一句,这是最简单的方法。

然后,您应该构建一个函数,该函数可以在给定索引的情况下为您提供正确的数据。

  

例如:

如果您有[data1, dummy, data2, dummy, data3, data4]

如果您要求数据源的第二个元素,它应该回复data2 如果您要求数据源的第四个元素,它应该回复data4

当然,您还需要一个能够为您提供正确length数据源而无需所有虚拟数据的函数。

  

然后只在适当的地方使用此功能(例如):

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return numberOfActualDataItems(datasource)
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = //Obtain your reusable cell

        let item = actualDataItemIndex(indexPath.row)
        //configureCell will be the function were you place your data to view
        self.configureCell(cell, item)
        return cell
}

答案 1 :(得分:0)

到目前为止,这是有效的,但我并不想覆盖heightForRowAtIndexPath :(

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

 SomeObjectClass *object = [dataSourceArray objectAtIndex:indexPath.row];
 if (object.objectType == DummyDataType) {
    return 0;
 }
return UITableViewAutomaticDimension;
}