2013-06-20 13 views
13

Ich verwende eine benutzerdefinierte Tabellenansicht Zelle für meine Tabellenansicht. Zum Festlegen des Rahmens habe ich eine Ansicht auf die benutzerdefinierte Zelle erstellt und ändere die Randeigenschaften.Ändern Sie die Rahmenfarbe einer UITableViewCell bei Auswahl

self.borderView.layer.borderColor = VIEW_BORDER_COLOR; 

Ich möchte die ausgewählte Zelle markieren, indem Sie die Rahmenfarbe ändern. Ich versuchte es in didselectrowforindexpath zu ändern,

cell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 

aber da die Zellen wiederverwendet werden, es ändert sich auf eine Rolle.

+0

Sie Mehrfachauswahl oder einzelne Auswahl ... –

+0

[Zelle setShowsTouchWhenHighlighted: JA] tun; versuchen Sie diese ... – Jitendra

Antwort

19

können Sie

verwenden
[cell.contentView.layer setBorderColor:[UIColor blackColor].CGColor]; 
[cell.contentView.layer setBorderWidth:2.0f]; 

es Ihnen helfen, Hoffnung.

4

Müssen markieren/un Zeichen (vorausgesetzt, u muß nur einen nach dem anderen ausgewählt) der Rahmenfarbe immer wieder ähnliche Videos-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if(indexPath.row==self.selectedRow){ 
cell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 
}else { 
cell.borderView.layer.borderColor = [UIColor clearColor].CGColor; 
} 
} 

Nur speichern/cache den gewählten Index wie-

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

//Unselected the prevoius selected Cell 
      YourCellClass *aPreviousSelectedCell= (YourCellClass*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:self.selectedRow inSection:0]]; 
      aPreviousSelectedCell.borderView.layer.borderColor = [UIColor clearColor].CGColor; 

//Selected the new one-  
      YourCellClass *aSelectedCell = (YourCellClass*)[tableView cellForRowAtIndexPath:indexPath]; 

    aSelectedCell.borderView.layer.borderColor = [UIColor yellowColor].CGColor; 

      self.selectedRow = indexPath.row; 
     } 
+0

Froh, wenn es funktioniert..kann in Betracht ziehen, die richtige Antwort zu akzeptieren :) –

+0

ich wünschte wirklich, ich könnte ... noch keine Reputation :( –

+0

borderView ist keine gültige Eigenschaft für UITableViewCell – Necreaux

31

Verwendung:

Swift 2:

cell.layer.borderWidth = 2.0 
cell.layer.borderColor = UIColor.grayColor().CGColor 

Swift 3

cell.layer.borderWidth = 2.0 
cell.layer.borderColor = UIColor.gray.cgColor 
Verwandte Themen