2015-03-24 3 views
1

Я хотел бы изменить цвет текста UITableViewCell, если он выбран, но только это. Я хотел бы отключить подсветку фона в ячейке. Я видел такие решения, как:Отключить изменение цвета фона, но включить изменение цвета текста при подсветке UITableViewCell

Но это также отключает изменение цвета текста. Является ли такое поведение, которое я бы хотел достичь простым?

ответ

5

В вашем cellForRowAtIndexPath, do:

Шаг 1. Установите свой стиль выделения по умолчанию.

cell.selectionStyle = UITableViewCellSelectionStyleDefault; 

Шаг 2. Установите пустой вид в качестве фона зрения

UIView *view = [UIView new] ; 
[view setBackgroundColor:[UIColor clearColor]]; 
[cell setSelectedBackgroundView:view]; 

Шаг 3. Установить цвет текста вы хотите, скажем,

[[cell textLabel] setTextColor:[UIColor orangeColor]]; 
[[cell textLabel] setHighlightedTextColor:[UIColor blackColor]]; 

Надежда, это помогает.

+1

Да, это именно так, как я и хотел. Это приводит к тому, что некоторые из них работают с разделителями, но я думаю, что справимся. – Rafal

+1

Добавьте свой собственный разделитель .. !! ;-) – itsji10dra

0
Cell.textLabel.textColor=[UIColor graycColor]; 
Cell.textLabel.backgroundColor = [UIColor blackColor]; 

попробовать это в вашем cellForRowAtIndexPath

+0

Это только изменяет фон textLabel на черный и ничего не делает с рамкой выбора. – Rafal

+0

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { UITableViewCell * cell = (UITableViewCell *) [tableView cellForRowAtIndexPath: indexPath]; cell.lblStatusUI.backgroundColor = [UIColor greenSeaColor]; – NRV

1

В вашем пользовательской Tableview класса ячейки переопределения setSelected метода и на основе государственного выбора цвета текста обновления соответственно.

Ex:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
    if (selected) { 
     [self.textLabel setTextColor:[UIColor orangeColor]]; 
    } else { 
     [self.textLabel setTextColor:[UIColor blackColor]]; 
    } 
} 

В cellForRowAtIndexPath отключить выбор ячейки по умолчанию

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
0

Вы должны попробовать использовать -tableView: didSelectRowAtIndexPath:

, то вы должны быть в состоянии предназначаться текст в ячейке (в зависимости от того, как он настроен, и если метка является свойством ячейки)

0

Swift 4/IOS 11.2/Xcode 9.2:

Перекрытие setSelected является ответом.

Если вы хотите поведение по умолчанию плюс некоторые другие изменения, а затем оставить selectionStyle в одиночку, или установить его в .default:

selectionStyle = .default 

Если вы хотите, чтобы все пользовательские поведения, установите его в . никто:

selectionStyle = .none 

в любом случае - даже если вы установите его в .none, ваш переопределенный setSelected по-прежнему будет вызван.Например:

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    if selected { 
     textLabel.textColor = orange 
    } else { 
     textLabel.textColor = black 
    } 
} 
Смежные вопросы