2010-09-14 12 views
9

Ich habe eine UITableView, die eine Vielzahl von benutzerdefinierten UITableViewCells verwendet.Ändern Sie die UITableView separatorColor für eine einzelne UITableViewCell

Ich möchte in der Lage sein, eine dieser Tabellenzellen mit einer anderen Trennfarbe als der Rest der anderen Zellen erscheinen zu lassen.

Ich weiß, dass tableview.seperatorColor das ganze tableView aktualisiert. Gibt es eine zellspezifische Eigenschaft, die ich vermisse, oder eine andere Möglichkeit, dies zu tun?

Danke für irgendwelche Tipps. Entschuldigung, wenn ich gerade auf etwas in der UITableViewCell Klasse Abstand gebe.

Antwort

9

Haftungsausschluss - dies funktionierte für mich zu der Zeit unter meinen spezifischen Umständen. Es funktioniert nicht garantiert, es scheint nicht mehr zu funktionieren, und ich rate Ihnen jetzt Unterklasse UITableViewCell.

Kam über diesen Beitrag bei der Suche nach UITableView.separatorColor unterschiedlich über Gruppen/Abschnitte in einem gruppierten UITableView.

Sie müssen nicht unbedingt UITableViewCell von der Unterklasse trennen. Sie können die Einstellung tableView.separatorColor bei jedem Anruf auf tableView:cellForRowAtIndexPath: versuchen.

Wenn Sie beispielsweise möchten, dass das Trennzeichen im ersten Abschnitt mit der Standardfarbe sichtbar ist, in der ersten Zeile/Zelle des zweiten Abschnitts sichtbar und in den übrigen Zeilen im zweiten Abschnitt nicht sichtbar ist können Sie wie folgt vor:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
switch (indexPath.section) { 
    case 0: 
     tableView.separatorColor = nil; 
     break; 
    case 1: 
     switch (indexPath.row) { 
      case 0: 
       tableView.separatorColor = nil; 
       break; 
      case 1: 
       tableView.separatorColor = [UIColor clearColor]; 
       break; 
      default: 
       break; 
     } 
     break; 
    default: 
     break; 
} 
+0

Super interessant. Ich schätze es, dass Sie dies aktualisiert haben. Ich hatte in meiner Zelle damit begonnen, eigene Separatoren einzurichten, aber das sieht sehr vielversprechend aus und ich werde es versuchen. Ich schätze, der Wert wird jedes Mal überprüft, wenn eine Uitable-Zelle eingerichtet wird, also ändert sich der Wert nicht einfach. – Nick

+0

Hatte Gelegenheit, dieses Problem in einer anderen Tabellenansicht erneut zu begegnen.Dieser Ansatz funktioniert und Sie müssen nicht für jede Zelle ein eigenes Trennzeichen zeichnen. – Nick

+6

Dies funktioniert nicht für iOS SDK 4.3. Wenn ich es versuche, flickr die Trennzeichen flickr, wie ich scroll und am Ende zufällig sichtbar, wenn ich mit dem Scrollen aufhören. –

7

Die tableView.separatorColor ist global für alle Zellen.

Wenn Sie diese Farben weiter anpassen möchten, sollten Sie die separatorStyle-Eigenschaft auf UITableViewCellSeparatorStyleNone setzen und UITableViewCell außer Kraft setzen.

Dann können Sie Ihre eigenen benutzerdefinierten Trenner in der contentView der Cell zeichnen und anpassen.

3

ab iOS 7 so etwas wie dies in Ordnung scheint zu funktionieren:

  1. Set UITableViewCellSeparatorStyleSingleLine auf UITableView
  2. Für die Zelle, die Sie ändern möchten, der Separator Farbe verbergen zuerst den Separator durch die Einsätze wechselnden cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 10000);
  3. ändern die Hintergrundfarbe der Zelle, die verschiedene Trennzeichen Farbe cell.backgroundColor = [UIColor greenColor];

Jetzt haben Separator die gleiche Farbe wie Ihre Zelle Hintergrundfarbe haben sollte. Beachten Sie, dass all dies in der XIB-Datei Ihrer Zelle ohne Code gesetzt werden kann. Beachten Sie auch, dass Sie wahrscheinlich die Hintergrundfarbe der Inhaltsansicht der Zelle in eine andere als die Standardfarbe ändern möchten (wahrscheinlich weiß), sodass die grüne Farbe nur in der Trennlinie erscheint.

Verwandte Themen