Изменение свойства selectedBackgroundView является правильным и простым способом. Я использую следующий код, чтобы изменить цвет выделения:
// установить цвет выделения
UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
myBackView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1];
cell.selectedBackgroundView = myBackView;
[myBackView release];
или вы можете использовать это ..
Вот наиболее эффективный способ решения этой проблемы, с которым я столкнулся, используя метод делегата willDisplayCell (он учитывает белый цвет фона текстовой метки, а также при использовании cell.textLabel.text и / или ячейки. detailTextLabel.text):
(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { ... }
Когда вызывается этот метод делегата, цвет ячейки контролируется через ячейку, а не в виде таблицы, как при использовании:
(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { ... }
Таким образом, в теле метода делегата ячейки добавьте следующий код для чередования цветов ячеек или просто используйте вызов функции, чтобы сделать все ячейки таблицы одним и тем же цветом.
if (indexPath.row % 2)
{
[cell setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
}
else [cell setBackgroundColor:[UIColor clearColor]];