Ich bin vor ein Problem mit UITableView.Füllen UITableView Zelle aus entfernten Datenbank
Ich möchte dynamisch seine Zellen mit Daten füllen aus einer entfernten Datenbank geholt, so dauert es einige Zeit, bevor die Daten angekommen. Hier
ist der Code:
class MailBoxViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var users: [NSDictionary] = []
override func viewDidLoad() {
super.viewDidLoad()
// call to rest API code to get all users in [NSDictionary]
(...)
// set table view delegate and data source
self.tableView.delegate = self
self.tableView.dataSource = self
}
// set number of sections within table view
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
// set number of rows for each section
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return self.users.count
}
return 0
}
// set header title for each section
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "Users"
}
}
// set cell content for each row
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// deque reusable cell
let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell
// set item title
if indexPath.section == 0 {
cell.textLabel?.text = self.users[indexPath.row]["firstname"] as? String
}
return cell
}
}
Das Problem ist, dass, wenn Tableview-Funktionen aufgerufen werden für jeden Abschnitt Anzahl der Zeilen zu setzen und Zelleninhalt für jede Zeile zu setzen, mein [NSDictionary] Benutzer ist noch leer .
Wie könnte ich tun, Zeilen und Zellen nach meinem Anruf nur dann zur API-Code zur Ruhe alle Benutzer erhalten in [NSDictionary] fertig ist?
Vielen Dank für jedes Feedback.
Grüße
Ja, aber wenn die Datenquellenmethoden das erste Mal aufgerufen werden, ist self.users leer, daher ist es wegen einer Ausnahme außerhalb des Bereichs abgestürzt. – Thomi
Ich sehe nicht, wie Sie sich hier außer Reichweite gehen. Sie geben die Anzahl der Arrays für die Anzahl der Benutzer zurück. Wenn keine Benutzer vorhanden sind, wird die Methode 'cellForRowAtIndexPath:' nicht aufgerufen. – AdamPro13
Sie haben Recht. Ich habe es jetzt, vielen Dank! – Thomi