我的数据源数组中有一些虚拟对象。
我不想在屏幕上显示它们。我也无法从数据源数组中删除它们。
我正在使用适当的约束来获得动态单元格高度。
有没有办法可以使用AutoLayout
为这些虚拟对象显示 0 height 的单元格?
答案 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;
}