UIView как разделитель в UITableViewCell и выбранный цвет строки

#iphone #uitableview

#iPhone #uitableview

Вопрос:

В моем приложении есть TableView, и мне нужно было изменить высоту и цвет разделителя. Просмотр здесь, в SO, помог мне найти решение. Итак, я в основном добавляю UIView в свою ячейку и использую это как «поддельный» разделитель:

 UIView *colorSeparator = [[UIView alloc] initWithFrame:CGRectMake(0, 53, cell.frame.size.width, 4)];
    colorSeparator.backgroundColor = [UIColor yellowColor];
    [cell.contentView addSubview:colorSeparator];
    [colorSeparator release];
  

Но теперь я заметил, что при нажатии на строку цвет выделения применяется к моему поддельному разделителю. Кто-нибудь знает, как этого избежать? Спасибо за потраченное время 🙂

Ответ №1:

Вы можете восстановить цвет вашего разделителя в setSelected:animated: и setHighlighted:animated: методах UITableViewCell.

 // just edited your function, it was missing a square bracket
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
    UIColor *c = [[colorSeparator.backgroundColor retain] autorelease];
    [super setHighlighted:highlighted animated:animated];
    colorSeparator.backgroundColor = c;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    UIColor *c = [[colorSeparator.backgroundColor retain] autorelease];
    [super setSelected:selected animated:animated];
    colorSeparator.backgroundColor = c;
}
  

Комментарии:

1. Спасибо большое! То есть вы имеете в виду, что я должен вложить UITableViewCell и переопределить эти два метода?

2. Да, вам следует создать подкласс UITableViewCell, переопределить эти методы и вернуть объекты вашего нового класса из метода делегирования UITableView.