Set background color of UITableViewCell

前端 未结 6 1316
执念已碎
执念已碎 2021-02-15 22:47

I have looked around to find a solution for setting the background color of the accessoryView to the same background color as the cell´s contentView.

    cell.co         


        
6条回答
  •  悲哀的现实
    2021-02-15 23:17

    I struggled with this one for a little while too and resorted to creating a custom image with the accessory. But I just found this solution that works well and doesn't require a custom image. The trick is to change the cell's backgroundView color not the backgroundColor.

    UIView *myView = [[UIView alloc] init];
    if (indexPath.row % 2) {
        myView.backgroundColor = [UIColor whiteColor];
    } else {
        myView.backgroundColor = [UIColor blackColor];
    }
    cell.backgroundView = myView;
    

    No need to change the accessoryView or contentView background colors. They'll follow automatically.


    Note for 2014. Very typically you wold use -(void)setSelected:(BOOL)selected animated:(BOOL)animated

    So, you'd have a custom cell class, and you'd set the colours for the normal/selected like this...

    HappyCell.h
    @interface HappyCell : UITableViewCell
    @property (strong, nonatomic) IBOutlet UILabel *mainLabel;
    etc...
    @end
    
    HappyCell.m
    @implementation HappyCell
    
    -(id)initWithStyle:(UITableViewCellStyle)style
          reuseIdentifier:(NSString *)reuseIdentifier
        {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self)
            {
            }
        return self;
        }
    
    -(void)awakeFromNib
        {
        }
    
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated
        {
        [super setSelected:selected animated:animated];
    
        if(selected)
            {
            self.backgroundColor = [UIColor redColor];
            .. other setup for selected cell
            }
        else
            {
            self.backgroundColor = [UIColor yellowColor];
            .. other setup for normal unselected cell
            }
        }
    
    @end
    
    // to help beginners.......
    // in your table view class, you'd be doing this...
    
    -(NSInteger)tableView:(UITableView *)tableView
          numberOfRowsInSection:(NSInteger)section
        {
        return yourDataArray.count;
        }
    
    -(UITableViewCell *)tableView:(UITableView *)tv
          cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
        NSInteger thisRow = indexPath.row;
        ContentsCell *cell = [tv
          dequeueReusableCellWithIdentifier:@"cellName"
          forIndexPath:indexPath]; 
        // "cellName" must be typed in on the cell, the storyboard
        // it's the "identifier", NOT NOT NOT the restorationID
    
        [cell setupForNumber: thisRow];
        cell.mainLabel.text = yourDataArray[ thisRow ][@"whatever"];
        cell.otherLabel.text = yourDataArray[ thisRow ][@"whatever"];
    
        return cell;
        }
    

    hope it helps someone.

提交回复
热议问题