Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I modify the background color of an empty UITableViewCell object based on it's position?

Tags:

ios

iphone

ipad

I'm trying to write code to modify the background color of a cell based on it's position in the table. While the following code 'works', it only effects cells that are passed to it. Empty cells don't get effected.

- (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath
{
    if(!indexPath.row%2)
    {
        cell.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
        NSLog(@"Blue");
    }
    else{
        cell.backgroundColor = [UIColor whiteColor];
        NSLog(@"white");
    }
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
}

How can I effect the rest of the cells that are displayed, if empty, when there are few items in the list?

By 'empty' cells, I mean the placeholder cells that are displayed when your data source doesn't have enough data to fill the entire view given to the table view. For example, if you can fit 10 cells, but only have 5 worth of data, you only ever get handed 5 cells to work with -- the next 5 are empty and as far as I can tell, unaccessable.

like image 596
RonLugge Avatar asked Oct 26 '22 05:10

RonLugge


2 Answers

I guess you want to change the background only of "empty" cells ... Then you can change the backgroundColor in the InterfaceBuilder of the UITableView. But it will affect all empty cells.

You can also change the separator type.

Also, have a look here : http://www.zenbrains.com/blog/en/2010/06/color-de-fondo-de-celdas-vacias/

EDIT :

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // 7 depends on how many cell is shown
    return ([source count] <= 7) ? 7 : [source count];
}

From : Show blank UITableViewCells in custom UITableView

like image 57
William Remacle Avatar answered Nov 15 '22 08:11

William Remacle


It should work if the backgroundColor property of the cell's contentView is set, not the backgroundColor of the cell:

cell.contentView.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] ;
like image 29
iCode Avatar answered Nov 15 '22 08:11

iCode