Вопрос

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

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

Это было полезно?

Решение

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

Прочтите эту статью для получения дополнительной информации.

Другие советы

Добавьте этот код в метод tableForRowAtIndexPath своего табличного представления и просто измените ожидаемый цвет для стиля выбора 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;
   //-------------------------------------------------------------------------

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

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

    [super setHighlighted:highlighted animated:animated];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top