UITableView, Separatorfarbe wo einstellen?

162

Ich habe ein UITableViewin IB hinzugefügt und den "Delegaten" und die "Datenquelle" festgelegt, und alles funktioniert gut. Als nächstes wollte ich die Trennfarbe ändern, aber die einzige Möglichkeit, dies zu tun, bestand darin, die Methode einem der Rückrufe der Delegierten hinzuzufügen. Gibt es einen besseren Ort, an dem ich dies einfügen sollte?

Ich habe dies im Moment nicht, aber ich dachte, dass ich möglicherweise ein "iVar" von meinem Controller hinzufügen muss, das ich mit dem UITableViewin IB verknüpfen und dann die Trennfarbe in dem viewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}
Fuzzygoat
quelle
Das Hinzufügen der Variablen und das Anschließen an IB habe ich immer so gemacht.
s1mm0t
Das ist was ich gedacht habe. Ich habe ein Tutorial gemacht, das sie nicht verwendet haben, und iVar, sie haben sich nur auf die Rückrufe von Delegierten und Datenquellen verlassen. Sie haben jedoch nie auf die Trennfarbe zugegriffen, vielleicht ist das der Grund.
Fuzzygoat

Antworten:

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

Ich hoffe, das hilft - Sie brauchen das, self.um darauf zuzugreifen, denken Sie daran.

Swift 4.2

tableView.separatorColor = UIColor.red
Helen
quelle
Hallo Helen, greift das darauf zu, ohne dass eine @ -Eigenschaft hinzugefügt werden muss?
Fuzzygoat
1
Das ist wahr. Sie unterteilen UITableViewController in eine Unterklasse, die es als Eigenschaft deklariert. Es erbt daher die Accessor / Setter-Methoden der Oberklasse, sodass Sie sie entsprechend festlegen können. Sie können jedoch nicht direkt auf die Instanzvariable zugreifen (wahrscheinlich eine gute Sache). Der Grund, warum Sie es in einer Delegatmethode festlegen können, liegt darin, dass es ein Parameter für die aufgerufene Methode ist.
Helen
2
Oder wenn Sie möchten: self.tableView.separatorColor = UIColor.clearColor;
Brame
2
Nicht besonders Teil der Antwort, aber das Hinzufügen [super viewDidLoad];zum Code-Snippet wäre schön.
Totocaster