如何管理创建UITableViewCells?

时间:2012-01-30 11:58:38

标签: objective-c uitableview

你是不是很善良帮我解决这个问题: 我必须使用单元格填充tableView,并且我还有一个带有对象的数组来填充单元格。 问题是 - 如果对象不符合某些条件,如何跳过创建单元格?我的意思是如何编写类似的东西:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if(objectIsOk) {
    //create cell
} 
else {
    //do nothing
}
return cell;

注意:我没有对该对象数组的访问权限,它为每个indexPath.row动态地提供了一个对象

1 个答案:

答案 0 :(得分:2)

我不确定你的意思是“跳过创建一个单元格”。您的表视图数据源是 required ,以便为每个cellForRowAtIndexPath:调用返回一个单元格,对于您所说的表格将包含的每个部分中的每一行,都会调用该单元格。

如果你想返回一个空白单元格,为什么不做这样的事情:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;

    if (objectIsOk) {
        // Create normal cell
    } else {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"BlankCell"];
    }

    return cell;
}

您还可以在heightForRowAtIndexPath:委托方法中返回零高度,使其看起来不存在,如下所示:

- (CGFloat)tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (objectIsOk) {
        return 44.0f;
    } else {
        return 0.0f;
    }
}