Ich baue eine TableView, die eine leere Nachricht anzeigt.Wie man eine Tabelle erstellt Mit der Nachricht anzeigen, wenn Tabellenansicht leer ist?
Ich verwende die wirklich hilfreiche Antworten auf diese Frage (Handling an empty UITableView. Print a friendly message) Das bin ich auf eine Funktion geführt hat:
func emptyMessage(message:String, viewController:UITableViewController) {
let VCSize = viewController.view.bounds.size
let messageLabel = UILabel(frame: CGRect(x:0, y:0, width:VCSize.width, height:VCSize.height))
messageLabel.text = message
messageLabel.textColor = UIColor.black
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center;
messageLabel.font = UIFont(name: "Futura", size: 15)
messageLabel.sizeToFit()
viewController.tableView.backgroundView = messageLabel;
viewController.tableView.separatorStyle = .none;
}
ich dies wie dies in jeder Tabellenansichten Datenquelle nennen könnte:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
if projects.count > 0 {
return 1
} else {
TableViewHelper.EmptyMessage("You don't have any projects yet.\nYou can create up to 10.", viewController: self)
return 0
}
}
was funktionieren würde. Allerdings würde ich das lieber nicht wiederholt implementieren müssen und stattdessen eine benutzerdefinierte Tabellenansicht mit einer Methode in der Datenquelle haben, die fragt, welche Nachricht Sie hinzufügen möchten.
Ich habe versucht, die TableView-Klasse zu erweitern oder eine Unterklasse von TableView zu machen, aber ich denke, das ist nicht die Lösung. Stattdessen denke ich, dass die Lösung darin besteht, das UITableViewDataSource-Protokoll zu überschreiben, aber mein Wissen über Protokolle und Delegation ist nicht ausreichend.
Ich hoffe ich bin damit auf dem richtigen Weg. Und um zu verdeutlichen, könnte ich es auf die oben erwähnte Weise tun, aber ich versuche, die Funktionalität außer Kraft zu setzen, um eine intelligente Lösung zu schaffen, bei der ich mich nicht wiederhole.
Wirklich zu schätzen, und ich habe in der Bibliothek und das würde funktionieren. Ich habe in der Frage nicht angegeben, also würdest du nicht wissen, aber der Grund, warum ich nicht mit einer Bibliothek gegangen bin, ist, dass ich die Theorie dahinter lernen wollte, wie ich das machen könnte. Ich werde versuchen, die Github-Dateien zu lesen und zu sehen, wie sie es tun. Vielen Dank! –