Ich habe das ganze WWW nach einer anständigen Lösung gesucht, aber die meisten scheinen veraltet oder unzureichend.Header-Abschnitte in Tabellenansicht wiederverwenden
Ich habe Schwierigkeiten, eine benutzerdefinierte UITableViewHeaderFooterView in meinem UITableViewController einfach wieder zu verwenden.
Das ist mein Ansatz:
- eine Feder erstellen.
- Erstellen eines benutzerdefinierten
UITableViewHeaderFooterView
namensHeaderView
- ein Label hinzufügen und anschließen in
UITableViewController
‚sviewDidLoad()
- Dequeue und zurück um die Spitze in
tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)
Gewohnheit die Spitze zu HeaderView
HeaderView
Klasse: class HeaderView: UITableViewHeaderFooterView {
@IBOutlet weak var customLabel: UILabel!
}
In UITableViewController
Klasse:
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "HeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: "Header")
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "Header") as! HeaderView
headerView.customLabel.text = "This is a header section"
return headerView
}
Dies scheint von vielen als der Ansatz beraten werden, aber ich glaube, ich bin nicht richtig um die Spitze des Besitzers benutzerdefinierte Klasse HeaderView
(UITableViewHeaderFooterView
) eingestellt. Wenn die Zelle aus der Warteschlange entfernt wird bekomme ich einen tödlichen Absturz:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x60000020ebe0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key customLabel.'
ich auf jeden Fall sicher bin, habe ich die UILabel richtig angeschlossen, um Datei Besitzer in nib IB.
Ich versuchte, die HeaderView
Klasse UIView
ändern, aber dann würde dequeueReusableHeaderFooterView(withIdentifier: "Header") as! HeaderView
zu einem Absturz führen, wenn UITableViewHeaderFooterView zu UIView zwingen.
Warum ist das, und was ist der aktuelle Weg, um dies zu lösen?
aber ich bin nicht in der Lage die Spitze des Besitzers benutzerdefinierte Klasse HeaderView (UITableViewHeaderFooterView) einzustellen. ? –
Aktualisierte Antwort mit Screenshot! – nomadoda
In Ihrem Screenshot sollte die Vererbung vom Ziel überprüft werden Pl Check Ihr HeaderView.swift wird zum Ziel hinzugefügt -> tippen Sie auf swift Datei -> Rechtes Kontrollfeld ist ausgewählt oder nicht –