Ich bin ein Anfänger in Swift und habe es geschafft, zumindest die Grundlagen zu verstehen, wie man ein UITableView auffüllt. Ich stecke jetzt daran, mehrere Abschnitte mit Daten aus einem Wörterbuch zu füllen.Swift - Populating TableViews mit mehreren Abschnitten aus multidimensionalem Array
Ich habe ein mehrdimensionales Wörterbuch, die Objekte zu Kategorien zuordnet:
var categoryDict:[String:[AnyObject]] = ["Category A": ["Object 1","Object 2"], "Category B":["Object 3"]]
Jetzt möchte ich bevölkern meine Tableview, so dass es so etwas wie dies zeigt:
Kategorie A
- Objekt 1
- Objekt 2
Kategorie B
- Objekt 3
So weit ich bin in der Lage eine Reihe von Kategorien zu erstellen, um die Anzahl von Abschnitten zurückzukehren sowie die Arrays zu zählen im Wörterbuch gespeichert, um die Anzahl der Zeilen in jeder bestimmten Kategorie zu erhalten. Jetzt bin ich völlig beim Auffüllen des TableView mit Abschnitten und Zeilen fest. Wie kann ich das machen? Vielen Dank!
Mein Code so weit:
var categoryList:[String] = [String]()
var categoryDict:[String:[AnyObject]] = ["Category A": ["Object 1","Object 2"], "Category B":["Object 3"]]
func getLists() {
categoryList = Array(categoryDict.keys)
categoryList.sortInPlace(before)
}
// Sort Array
func before(value1: String, value2: String) -> Bool {
return value1 < value2;
}
func getNumberOfEntrysInSection (Section: Int) -> Int {
let category:String = categoryList[Section] //Get Category for Index in CategoryList
let value:[AnyObject] = categoryDict[category]! //Get Value for this specific Category
let number = value.count
return number
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
getLists()
return categoryList.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return getNumberOfEntrysInSection(section)
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return categoryList[section]
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("BufferCell", forIndexPath: indexPath)
???
return cell
}
Haben Sie Ihren Delegierten und Ihre Datenquelle festgelegt? – ridvankucuk
Ich denke du bist auf dem richtigen Weg. Was ist dein Problem, Bruder? – iMuzahid
Ich denke, Delegat und Datenquelle sind richtig eingestellt - ich kann eine Tabelle mit nur einem Abschnitt auffüllen, aber mehrere Abschnitte sind das Problem: Ich kann keinen Weg finden zu sagen "Lassen Sie den Titel für Abschnitt 0 der String in der KategorieListe bei a Spezifischer Index, befüllen Sie dann die Zellen innerhalb dieses Abschnitts mit den Werten, die in categoryDict für diese bestimmte Kategorie angegeben sind ". Weißt du was ich meine? All die Tutorials, die ich gelesen habe, scheinen das auf eine andere Art und Weise zu tun (was ich nicht wirklich verstehe), aber es muss eine Möglichkeit geben, die Daten einzufügen, wenn ich sie aus dem Kategorie-Wörterbuch heraus gebe. – Eirikurii