2010-07-29 21 views
130

Ich habe eine UITableView in IB hinzugefügt und die "Delegate" und "Datenquelle" eingestellt und alles funktioniert gut. Was ich als nächstes tun wollte, war die Farbe des Separators zu ändern, aber die einzige Möglichkeit, dies zu tun, war, die Methode zu einem der Delegaten-Callbacks hinzuzufügen. Gibt es einen besseren Ort, an den ich das setzen sollte?UITableView, Separator Farbe wo zu setzen?

Ich habe dies im Moment nicht, aber ich dachte, dass ich vielleicht eine "iVar" von meinem Controller hinzufügen, die ich mit der UITableView in IB verknüpfen und dann Trennzeichenfarbe in der viewDidload setzen kann?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView setSeparatorColor:[UIColor blackColor]]; 
    return 65; 
} 
+0

die Variable Hinzufügen und es bis in IB Einhaken ist, wie ich es immer getan habe. – s1mm0t

+0

Das war was ich dachte. Ich habe ein Tutorial gemacht, das sie nicht benutzt haben und iVar, sie haben sich nur auf die Callbacks von Delegaten und Datenquellen verlassen. Allerdings haben sie nie auf die Farbe des Separators zugegriffen, vielleicht deshalb. – fuzzygoat

Antwort

279
- (void)viewDidLoad 
{ 
    [self.tableView setSeparatorColor:[UIColor myColor]]; 
} 

Ich hoffe, das hilft - Sie self. benötigen, darauf zuzugreifen, erinnern.

+0

Hallo Helen, kann man darauf zugreifen, ohne eine @property hinzufügen zu müssen, sieht es so aus? – fuzzygoat

+1

Das ist wahr. Sie untergliedern UITableViewController, die es als eine Eigenschaft deklariert. Es erbt daher die Accessor/Setter-Methoden der Superklasse, so dass Sie sie entsprechend einstellen können. Sie können jedoch nicht direkt auf die Instanzvariable zugreifen (wahrscheinlich eine gute Sache). Der Grund, warum Sie es in einer Delegate-Methode festlegen können, ist, weil es ein Parameter für die aufgerufene Methode ist. – Helen

+1

Oder wenn Sie möchten: self.tableView.separatorColor = UIColor.clearColor; – bbrame

48

Jetzt sollten Sie in der Lage sein, es direkt in der IB zu tun.

Nicht sicher, wenn dies verfügbar war, wenn die Frage ursprünglich gepostet wurde.

enter image description here

+1

Danke, funktioniert wie ein Charme mit Xcode 6.1. –

18

Swift Version:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Assign your color to this property, for example here we assign the red color. 
    tableView.separatorColor = UIColor.redColor() 
} 
+0

Dies zeigt mir einen Fehler "SeparatorColor" ist nicht verfügbar auf TVOS. – Banana

2

Wenn Sie nur die gleiche Farbe zu jedem Separator gesetzt werden soll, und es ist undurchsichtig können Sie:

self.tableView.separatorColor = UIColor.redColor() 

Wenn Sie Sie möchten für die Trennzeichen unterschiedliche Farben verwenden oder die Trennfarbe löschen oder eine Farbe mit Alpha verwenden.

ACHTUNG: Sie müssen wissen, dass es eine Hintergrundansicht im Separator gibt, die eine Standardfarbe hat.

es ändern Sie diese Funktionen nutzen können:

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { 
     if(view.isKindOfClass(UITableViewHeaderFooterView)){ 
      var headerView = view as! UITableViewHeaderFooterView; 
      headerView.backgroundView?.backgroundColor = myColor 

      //Other colors you can change here 
      // headerView.backgroundColor = myColor 
      // headerView.contentView.backgroundColor = myColor 
     } 
    } 

    func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) { 
     if(view.isKindOfClass(UITableViewHeaderFooterView)){ 
      var footerView = view as! UITableViewHeaderFooterView; 
      footerView.backgroundView?.backgroundColor = myColor 
      //Other colors you can change here 
      //footerView.backgroundColor = myColor 
      //footerView.contentView.backgroundColor = myColor 
     } 
    } 

Hoffe, es hilft!

+1

Dies zeigt mir einen Fehler "SeparatorColor" ist nicht verfügbar auf TVOS. – Banana

7

Versuchen + (instanceType) Aussehen von UITableView:

Objective-C:

[[UITableView appearance] setSeparatorColor:[UIColor blackColor]]; // set your desired colour in place of "[UIColor blackColor]" 

Swift 3.0:

UITableView.appearance().separatorColor = UIColor.black // set your desired colour in place of "UIColor.black" 

Hinweis: Die Änderung wird auf alle in der Anwendung verwendeten Tabellen angewendet.

1

Swift 3, xcode Version 8.3.2, Storyboard-> Wählen Sie Ihre Tabelle View-> Inspector-> Separator.

Swift 3, xcode version 8.3.2

Verwandte Themen