UITableViewCell selected row's text color change

后端 未结 4 970
再見小時候
再見小時候 2021-01-30 12:47

I am having a tableview and I want to know that how can I change the selected row\'s text color, say to Red ? I tried by this code :

- (UITableViewCell *)tableV         


        
相关标签:
4条回答
  • 2021-01-30 13:02

    If you want to change the text colour only, with out changing cell background colour. you can use this.Write this code in in cellForRowAtIndexPath method

    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor clearColor];
    cell.selectedBackgroundView = selectionColor;
    cell.textLabel.highlightedTextColor = [UIColor redColor];
    
    0 讨论(0)
  • I had the same problem, try this!

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        for (id object in cell.superview.subviews) {
            if ([object isKindOfClass:[UITableViewCell class]]) {
                UITableViewCell *cellNotSelected = (UITableViewCell*)object;
                cellNotSelected.textLabel.textColor = [UIColor blackColor];
            }
        }
    
        cell.textLabel.textColor = [UIColor redColor];
    
        [tableView deselectRowAtIndexPath:indexPath animated:NO];
    }
    

    That may be the solution to your (and mine) problem.

    0 讨论(0)
  • 2021-01-30 13:08

    If you're already subclassing UITableViewCell, it's easier/cleaner to set the colors in the awakeFromNib method (assuming you're instantiating from a storyboard or xib).

    @implementation MySubclassTableViewCell
    
    - (void)awakeFromNib {
        [super awakeFromNib];
        self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
        self.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:0.1 green:0.308 blue:0.173 alpha:0.6];
        self.customLabel.highlightedTextColor = [UIColor whiteColor];
    }
    
    @end
    
    0 讨论(0)
  • 2021-01-30 13:11

    Do this in tableView:cellForRowAtIndexPath::

    cell.textLabel.highlightedTextColor = [UIColor redColor];
    

    (And don't use cell.text = ... anymore. It has been deprecated for almost 2 years now. Use cell.textLabel.text = ... instead.)


    As Raphael Oliveira mentioned in the comments, if the selectionStyle of your cell equals UITableViewCellSelectionStyleNone this won't work. Check Storyboard as well for the selection style.

    0 讨论(0)
提交回复
热议问题