HurkNburkS
HurkNburkS

Reputation: 5510

How to not return a UITableviewCell

I have a NSArray of NSDictionaries, in this array there are several values which I do not want to show in the UITableView, I would like to know how to avoid returning these cells in the tableView:cellForRowAtIndexPath:.

I have tried to return nil; but this has caused me errors.

This is what my code looks like

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    CustomInstallCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil) {
        cell = [[CustomInstallCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    // Configure the cell...
    cell.selectionStyle = UITableViewCellSelectionStyleGray;
    currentInstallDictionary = [sortedItemsArray objectAtIndex:indexPath.row];

        NSNumber *tempDP = [currentInstallDictionary objectForKey:@"dp"];
        NSInteger myInteger = [tempDP integerValue];
        
        if (myInteger == 0) {

return cell;
}
return nil; // gives error
}

Upvotes: 0

Views: 245

Answers (2)

Basil Bourque
Basil Bourque

Reputation: 338326

The UITableView is only asking for a cell because you told it to ask. Your implementation of the UITableViewDataSource protocol implements the two methods:

In those methods you determine how many cells should appear on screen. As Brian Shamblen answered, if you don't want that data to appear in the table view, some how ignore (filter, delete, whatever) that data when you calculate the number of sections and rows. If you do so, no "extra" cells will be requested.

Upvotes: 0

Brian Shamblen
Brian Shamblen

Reputation: 4703

This method must return a cell. It cannot return nil. The best thing to do is filter your list before you load your table and use the filtered array when dequeueing cells.

Upvotes: 2

Related Questions