2013-08-02 13 views
9

ustawić:Nie można zmienić kolor podświetlenia niebieski UITableView

cell.selectionStyle = UITableViewCellSelectionStyleGray; 

i użyć kodu, aby podświetlić wiersz:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection: 0]; 
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone 

Kolor podświetlenia niebieski zawsze nawet ustawić na szary. Jeśli ustawię:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

działa dobrze i bez podświetlenia. Ale po prostu nie działa z:

cell.selectionStyle = UITableViewCellSelectionStyleGray; 

Po prostu pokazuje kolor niebieski zamiast szarego. Dowolny pomysł? Dzięki.

+0

proszę pisać kod, który zawiera pełne ciał metoda gdzie ustawiasz kolor zaznaczenia i dokonujesz wyboru. –

+0

Nie próbujesz tego przez przypadek w systemie iOS 7, prawda? –

Odpowiedz

28

wdrożyć go w następujący sposób: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath { 

    [cell setSelectionStyle:UITableViewCellSelectionStyleGray];  
} 

LUB

Ustaw kolor, selectedBackgroundView „s jak to, co chcesz w swojej komórce zwyczaj Tableview (która jest podklasą UITableViewCell):

UIView * selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame]; 
[selectedBackgroundView setBackgroundColor:[UIColor redColor]]; // set color here 
[self setSelectedBackgroundView:selectedBackgroundView]; 

lub można go skonfigurować w trybie -tableView:cellForRowAtIndexPath::

//... 
[cell setSelectedBackgroundView:selectedBackgroundView]; 
//... 
+0

Dzięki. Zadziałało. Używam niestandardowej komórki. Wygląda jak setSelectionStyle: UITableViewCellSelectionStyleGray nie działa z komórką niestandardową. – user2543991

+6

Ponadto, nie trzeba ustawiać ramki, więc najkrótszym sposobem ustawienia koloru zaznaczenia są te dwie linie w 'tableView: cellForRowAtIndexPath:': 'cell.selectedBackgroundView = [[init URIiew]]; cell.selectedBackgroundView.backgroundColor = [UIColor redColor]; ' (Dodaj autorelease do init, jeśli nie używasz ARC.) –

0

Należy wykonać tego rodzaju konfigurację w interfejsie InterfaceBuilder lub w metodzie cellForRowAtIndexPath:.

+0

tak. Zrobiłem to po raz pierwszy w IB i nie działałem. Następnie zrobiłem to w cellForRowAtIndexPath i nadal nie działałem. – user2543991

0

Wykonaj globalne wyszukiwanie "UITableViewCellSelectionStyle Blue", aby upewnić się, że nie popełniono błędu.

4

Wystarczy dodać to w sposobie jego pracy dla mnie

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
.... 
UIView *bgColorView = [[UIView alloc] init]; 
bgColorView.backgroundColor = [UIColor colorWithRed:(76.0/255.0) green:(161.0/255.0) blue:(255.0/255.0) alpha:1.0]; // perfect color suggested by @mohamadHafez 
bgColorView.layer.masksToBounds = YES; 
cell.selectedBackgroundView = bgColorView; 
.... 
return cell; 
} 

jeśli masz jakiekolwiek pytania czuć swobodnie pytać

Powiązane problemy