Das ist eine wirklich alte Frage, dennoch ist es einer der ersten Einträge bei Google, wenn nach der Entfernung der oberen und unteren Trennzeichen für jeden Abschnitt gesucht wird.
Nach einigen Nachforschungen fand ich heraus, dass es keine Möglichkeit und keine Absicht von Apple gibt, dies irgendwie ohne dumm komplizierte Hacks der Ansichtshierarchie zu erreichen.
Glücklicherweise gibt es einen absolut einfachen und einfachen Weg, um einen solchen Look zu erzielen:
Ich sage einfach, aber für einen Anfänger kann dies schwierig sein, da er nicht versteht, wie es UITableView
funktioniert und wie man eigene Zellen implementiert. Lassen Sie mich versuchen, es zu erklären:
- Erstellen Sie eine
UITableViewCell
Unterklasse
- Erstellen Sie in Ihrer Zelle eine
@IBOutlet weak var separatorView: UIView!
Eigenschaft
- Wählen Sie in Ihrem Storyboard die Tabellenansichtszelle aus und wählen Sie Ihre eigene Zelle als Klasse aus, die die Zelle sichert. Hinweis : Sie müssen keinen benutzerdefinierten Stil verwenden. Sie können weiterhin Basic, Untertitel usw. verwenden.
- Stellen Sie Ihr
UITableView
s Separator Style
auf ein None
, um das Standardtrennzeichen auszublenden
- Ziehen Sie a
UIView
auf Ihre Zelle und ändern Sie die Größe so, dass es sich unten (oder oben) in der Zelle befindet. Verwenden Sie das Size Inspector
s Autoresizing
, um es an Start / Ende / unten zu stecken und ihm eine flexible Breite zu geben (oder Autolayout, aber das ist in diesem Fall etwas übertrieben).
- Verbinden Sie die Ansicht mit dem Ausgang Ihrer Zellklasse
- In Ihrem
UITableViewDataSource
s cellForRowAtIndexPath:
legen Sie die isHidden
Eigenschaft Ihres benutzerdefinierten Trennzeichens fest, basierend darauf, ob dies die indexPath.row
letzte Zeile (oder die erste, wenn sich Ihre Ansicht oben befindet) im Abschnitt ist
Hier ist ein Beispielcode:
class MyCell: UITableViewCell {
@IBOutlet weak var separatorView: UIView!
}
class ViewController: UITableViewController {
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyCell
cell.separatorView.isHidden = indexPath.row == 2
return cell
}
}
Und hier einige Screenshots:
Ja, es ist eine Arbeit, aber es gibt einfach keine Möglichkeit, beim Codieren etwas umsonst zu machen. Am Ende sind wir Programmierer und es liegt an uns, die Codierung durchzuführen. Es ist immer besser, die 5-10 Minuten damit zu verbringen, dies einzurichten, als nur das Einfügen von Hacky-Code zu kopieren, der möglicherweise in Zukunft nicht mehr funktioniert, wenn Apple beschließt, die Ansichtshierarchie zu ändern.
Es war tatsächlich mehr Arbeit, diese Antwort zu schreiben, als das Trennzeichen zu implementieren. Ich war auch auf der Suche nach einer einfachen und schnellen Lösung, aber am Ende gab es einfach keine, die meiner Meinung nach die Verwendung wert war.
Ich hoffe, Sie sind auch skeptisch, wenn Sie For-Loops sehen, die über Unteransichten von Zellen iterieren, um Ansichten zur Laufzeit aus der Ansichtshierarchie auszublenden oder sogar zu entfernen. Apple bietet Ihnen eine einfache, vielseitige, stabile und zukunftssichere Lösung gleich um die Ecke . 7 kleine Schritte sind wirklich alles was Sie brauchen und sie sind leicht zu verstehen.
UIView
s als gefälschte Trennzeichen in die Zelle ein. Hoffentlich gibt es eine bessere Option.