Tabellenkopfansichten in StoryBoards

191

Gibt es eine Möglichkeit, eine Tabellenkopfansicht (tableHeaderView) in StoryBoard einzufügen (wie wir es früher im Interface Builder getan haben)?

Tyler DeWitt
quelle

Antworten:

349

Es sieht so aus, als würde man einfach ein Steuerelement an den oberen Rand der Tabellenansicht ziehen. Ich hatte nicht erwartet, dass es so einfach sein würde.

Vor dem Ablegen

Vor dem Ablegen

Nach dem Ablegen

Nach dem Ablegen

Herr Rogers
quelle
29
Ich war überrascht, dass dies so gemacht wird. In meiner Implementierung ist mir aufgefallen, dass ich meinen Abschnittscode heightForHeaderInSection: (NSInteger) löschen musste, damit dies ordnungsgemäß funktioniert. Andernfalls würde ich zusätzlichen Platz über der Header-Ansicht selbst haben. Damit dieser Header oben in der Tabellenansicht "hängen bleibt", musste ich den Abschnitt viewForHeaderInSection: (NSInteger) implementieren und diese Ansicht zurückgeben.
Ozz
13
Dies scheint nur zu funktionieren, wenn Sie mindestens eine Prototypzelle in der Tabelle haben.
Accatyyc
4
@cdo, können Sie näher erläutern, wie Sie den Header dazu gebracht haben, oben in der Tabellenansicht zu "kleben"? Ich habe versucht, blind zu implementieren, viewForHeaderInSection:und es wurde die Fehlermeldung "Einschränkungen können nicht gleichzeitig erfüllt werden" angezeigt. (Siehe meine Frage hier: stackoverflow.com/questions/14554051/… )
Ryanrhee
2
Danke, ich konnte das nicht tun, bis ich wusste, dass es funktionieren würde, Präzisionswiderstand erforderlich. Ich hatte das mehrmals versucht ...
Dave Ross
1
Sie können den Umriss auf der linken Seite verwenden, um das Ziehen durchzuführen. Dies ist einfacher, als zu versuchen, die genaue Stelle über der ersten Prototypzelle zu treffen, wenn Sie die Tabellenkopfansicht festlegen möchten. Ich bemerkte - möglicherweise einen Xcode-Fehler (5.0) -, dass dies nur funktionieren würde, wenn ich die Ansicht zuerst aus der regulären Hierarchie verschoben hätte. Ich habe es für diese Szene ganz nach unten gezogen. Dann könnte ich es in einem zweiten Schritt in die Tabellenansicht verschieben.
Daniel Schneller
10

Sie können dies einfach tun, indem Sie Ihr UIView/ UIImageViewdirekt unter das UITableViewin der Dokumentkontur ziehen (anstelle des Layouts).

Wenn Sie versuchen, das Layout anstelle der Dokumentkontur zu ziehen, UITableViewCellspringt dies zur obersten Handhabung, was frustrierend ist!

PANKAJ VERMA
quelle
-2

Das Ziehen und Ablegen einer Ansicht über die Tabellenansicht funktionierte nur für eine Bildschirmgröße, zumindest in Xcode 11. Auf verschiedenen Bildschirmen war die Größe nicht gut.

Ich habe gerade eine Ansicht erstellt und sie dort hinter der Tabellenansicht im Storyboard belassen. Ich habe ein IBOutlet dafür erstellt:

@IBOutlet weak var audioView: UIView!

Dann habe ich im Tableview-Code Folgendes getan:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return audioView
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 142
}

Es funktionierte gut auf allen Bildschirmgrößen.

Badr
quelle
1
Die Frage bezieht sich auf die Tabellenkopfansicht, nicht auf Abschnittskopfansichten.
R. Rincón
@R. Rincón, wo habe ich eine Abschnittsüberschrift erwähnt? Der Abschnitt in den Methoden ist aus dem Framework erforderlich. Jede TableView hat mindestens einen Abschnitt, wenn Sie das nicht wissen. Übergeben Sie einfach Abschnitt 0, wenn Sie keine Abschnitte haben.
Badr
Dieser Code gibt audioView für jeden Abschnitt als Abschnittsüberschrift zurück. Wenn jemand dies implementiert, ist tableView.tableHeaderView gleich Null. Wenn sie 5 Abschnitte haben, haben sie fünf Abschnittsüberschriften. Wenn sie bereits Abschnittsüberschriften haben und eine Tabellenüberschriftenansicht hinzufügen möchten, hilft diese Antwort ihnen nicht. Dies beantwortet nicht die Frage, die ausdrücklich erwähnt wird tableHeaderView.
R. Rincón
Sie können die Header-Ansicht für jeden Abschnitt mit einer Logik innerhalb der Methode angeben. TableViews wurden unter Berücksichtigung von Abschnitten erstellt. Sie haben immer Abschnitte, wenn Sie dies nicht tun, wäre dies Abschnitt 0. Es gibt keine Methode, um die Kopfzeilenansicht anzugeben, ohne einen Abschnitt anzugeben.
Badr