2012-06-04 14 views
9

Ich habe eine benutzerdefinierte UITableViewCell, die Farbe ändert, basierend auf welche Zeile es ist in:Wie verhindere ich, dass benutzerdefinierte UITableViewCells beim Abwählen weiß blinken?

TableViewController.m

- (void)willDisplayCell:(GSRSongCell *)cell atIndexPath:(NSIndexPath *)indexPath; 
{ 
    if (indexPath.row % 2 == 0) { 
     [cell lighten]; 
    } else { 
     [cell darken]; 
    } 
} 

CustomTableViewCell.m

- (void)lighten 
{ 
    self.selectedBackgroundView.backgroundColor = [UIColor whiteColor]; 
    self.contentView.backgroundColor = [UIColor whiteColor]; 
    self.primaryLabel.backgroundColor = [UIColor whiteColor]; 
    self.secondaryLabel.backgroundColor = [UIColor whiteColor]; 
} 
- (void)darken 
{ 
    UIColor *darkColor = [UIColor colorWithR:241 G:241 B:241 A:1]; 
    self.selectedBackgroundView.backgroundColor = darkColor; 
    self.contentView.backgroundColor = darkColor; 
    self.primaryLabel.backgroundColor = darkColor; 
    self.secondaryLabel.backgroundColor = darkColor; 
} 

Allerdings, wenn ich deselectRowAtIndexPath:animated:YES nennen, die Animation ein schwindet weiße Farbe in Zellen, in denen die selectedBackgroundColor dunkler sein sollte.

Ich erkannte dann, dass die Abwahl Animation hat nichts mit der selectedBackgroundColor zu tun; Tatsächlich basiert die Abwahl-Animation tatsächlich auf der Eigenschaft tableView.backgroundColor!

Wie kann ich die Abwahlanimation überschreiben, um zur Hintergrundfarbe meiner Zellen zu blenden?

+0

Ich habe auch versucht, die TabelleView.backgroundColor auf [UIColor clearColor] setzen - das hat keine Wirkung. – oliland

Antwort

9

Es belebt tatsächlich Zelle Hintergrundfarbe zurück, so dass Sie es setzen müssen

Fügen Sie diese Zeile in Aufhellen Methode

self.backgroundColor = [UIColor whiteColor]; 

und diese in verdunkeln Methode

self.backgroundColor = darkColor; 
+1

Ich kann nicht glauben, dass ich das nicht versucht habe. Vielen Dank! – oliland

3

Nur Setzen Sie die Zellenauswahl im UIBuilder oder im Code auf UITableViewCellSelectionStyleNone:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+0

Für mich in Swift habe ich 'cell.selectionStyle = UITableViewCellSelectionStyle.None' –

Verwandte Themen