2010-08-30 10 views
28

Ich habe eine benutzerdefinierte UITableViewCell in IB, aber aus irgendeinem Grund, trotz der Ein-Zeilen-Option für Separator ausgewählt ist, gibt es keine Trennlinien auf meinem Tisch.UITableViewCell Separator nicht angezeigt

Ist Ihnen das schon einmal passiert? Was gibt?

Danke!

Antwort

47

Ist das UITableViewCell in IB mit einer UITableViewCell-Unterklasse verknüpft, die drawRect: überschreibt? Wenn dies der Fall ist, stellen Sie sicher, dass Sie die Super-Implementierung aufrufen, da dies die Linie am unteren Rand zeichnet. Wenn Sie überschreiben layoutSubviews stellen Sie sicher, dass keine Ansichten den Boden der Zelle verdecken.

+51

Wenn Sie layoutSubviews überschreiben, rufen Sie auch [super layoutSubviews] auf; zuerst – codecaffeine

+1

@codecaffeine Jesus, danke dafür. – ZShock

+1

@codecaffeine Arbeitete auch für mich. Danke –

1

Ich fand separatorStyle in UITableView class reference. Es besagt, dass es der Zelle, die von der Delegate-Methode tableView:cellForRowAtIndex: zurückgegeben wird, separatorStyle hinzufügen wird.

Also, ich denke, Sie sollten die Stileigenschaft auf der UITableView-Instanz ändern.

+0

Sie können in dieser Methode keinen Trennungsstil zuweisen. – Shmidt

+0

@Smidt, las ich das Apple-Dokument erneut, http://goo.gl/FgTirp. ** UITableView verwendet diese Eigenschaft, um den Trennungsstil für die Zelle festzulegen, die vom Delegaten in tableView zurückgegeben wird: cellForRowAtIndexPath:. ** – AechoLiu

+0

das ist absolut richtig. – Shmidt

22

In meinem Fall habe ich vergessen, [super layoutSubviews] nach dem Überschreiben der layoutSubviews-Methode aufzurufen. Ich brauchte zwei Stunden, um das Problem zu finden.

+1

yeah ... Ich hatte auch das gleiche Problem –

2

in meinem Fall habe ich

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

0

Vielleicht unwahrscheinlichen Fall das separatorStyle Eigenschaft des Tableview festgelegt, aber es ist eine andere mögliche Ursache.

Ich habe eine benutzerdefinierte UITableView namens AddressBookTableView und es ist in einem .XIB für einen meiner View-Controller enthalten. Die Sache, die ich bemerkte, war, dass es als UIView Element mit der benutzerdefinierten Klasse hinzugefügt worden war, die AddressBookTableView ist. Ich löschte dieses Element und fügte stattdessen ein UITableView Element hinzu, dessen Klasse ich wieder als AddressBookTableView spezifizierte und die Trennzeichen auf magische Weise wieder erschienen!

mich Nahm eine super lange Zeit, dies zu finden ...

Stellen Sie sicher, Ihre benutzerdefinierten UITableView .xib Elemente UIView Elemente nicht umbenannt in der Tat benutzerdefinierte UITableView Elemente sind.

Um ehrlich zu sein, bin ich überrascht, dass das einzige bemerkbare Artefakt dieses Fehlers war, dass die Separatoren fehlten. Ansonsten funktionierte das UITableView noch normal?

50

Nur ein Heads-up, obwohl dies eine alte Post ist:

Wenn Sie den Simulator und den UITableView Separator verwenden zeigen nicht zwischen den Zellen bis es kann auf die Tatsache zurückzuführen sein, dass Ihre Fenster Skala zu klein ist .

Ändern Sie diese von> Scale-> 100%

+4

Das war der Grund in meinem Fall. Nahm mich stundenlang um herauszufinden. – Ali

+3

Gott! Ich kämpfe seit Stunden damit! Vielen Dank! – enricmacias

+2

Vielen Dank .. begann den Willen zu verlieren! – RJH

0

Window- gehen Wenn Sie programmatisch Subviews für Ihr Handy hinzufügen, stellen Sie sicher, dass Sie die Subviews hinzufügen

zu Zelle.content und NICHT an Zelle

[cell.contentView addSubview:subview]; 
0

Für alle sehen dies: Mein Problem war, dass ich mehrere Abschnitte hatte, und die erste Zelle in jedem Abschnitt nicht über einen Separator. In meiner Tabellenansicht hatte ich die heightForHeader-Funktion überschrieben (0 zurückgeben). Durch das Löschen wurde das Problem behoben.

Verwandte Themen