2009-06-17 6 views
3

Если у меня есть пользовательский UITableViewCell, который не использует textLabel, встроенный в ячейку, но вместо этого делает собственный чертеж, как я могу изменить внешний вид contentView на выбор, как это делается автоматически для текст по умолчанию (настраивается путем установки selectedTextColor:)?цвет выбора для UITableViewCell

Если я изменю tableView:willSelectRowAtIndexPath:, то он будет обновляться только после того, как будет выделен синий фон выбора, но не во время его анимации, как я хочу.

ответ

6

Просто не подклассифицируйте UITableViewCell и не используйте поведение по умолчанию. Вы можете полностью настроить ячейку без какого-либо подкласса.

Прочтите this article для получения более подробной информации.

+0

Это на самом деле то, что я делал, но ваша ссылка все еще указывала мне в правильном направлении. Мне нужно было изменить highlightTextColor для UILabel. –

+0

Когда вы говорили о «собственном чертеже», я сразу же подумал о подклассе. Виноват. Рад, что вы нашли решение – Thomas

3

Если вы подклассы в UITableViewCell, то вы можете настроить элементы ячейки путем переопределения следующего:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { 
    if(highlighted) { 
     self.backgroundColor = [UIColor redColor]; 
    } else { 
     self.backgroundColor = [UIColor clearColor]; 
    } 

    [super setHighlighted:highlighted animated:animated]; 
} 
5

Добавьте этот код в методе TableView cellForRowAtIndexPath и просто изменить ожидаемый цвет для стиля выбора UITableViewCell.

//------------------------------------------------------------------------- 
    //background selected view 
    UIView *viwSelectedBackgroundView=[[UIView alloc]init]; 
    viwSelectedBackgroundView.backgroundColor=[UIColor colorWithRed:124.0/255.0 green:202.0/255.0 blue:227.0/255.0 alpha:1.0]; 
    cell.selectedBackgroundView=viwSelectedBackgroundView; 
    //------------------------------------------------------------------------- 
Смежные вопросы