#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.