Я попробовал некоторые из вышеперечисленных, и Я действительно предпочитаю создать свой собственный подкласс UITableViewCell и затем переопределить методы touchesBegan / touchesCancelled / touchesEnded . Для этого игнорируйте все свойства selectedBackgroundView и selectedColor в ячейке и вместо этого просто устанавливайте эти цвета вручную каждый раз, когда вызывается один из вышеуказанных методов. Например, если вы хотите, чтобы ячейка имела зеленый фон с красным текстом, попробуйте это (в рамках вашего подкласса ячейки):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//Set backgorund
self.backgroundColor = [UIColor themeBlue];
//Set text
self.textLabel.textColor = [UIColor themeWhite];
//Call super
[super touchesBegan:touches withEvent:event];
}
Обратите внимание, что для этого нужно установить:
self.selectionStyle = UITableViewCellSelectionStyleNone;
В противном случае вы сначала получите текущий стиль выделения.
EDIT:
Я предлагаю использовать метод touchesCancelled, чтобы вернуться к исходным цветам ячеек, но просто игнорируйте метод touchesEnded.