2016-12-22 2 views
-1

Nach der Suche nach SO habe ich festgestellt, dass es viele Fragen zum Gruppieren und Anzeigen von Daten im Tabellenansicht-Controller gibt, aber keine Reihenfolge nach Datum erfordert.Zeigt ein Array von Datumsangaben in der Tabellenansicht an. Swift

Ich habe eine Reihe von Datum

let dateObjects = [2016-12-22 16:00:00 +0000, 2016-12-22 16:15:00 +0000, 2016-12-23 16:00:00 +0000, 2016-12-23 16:15:00 +0000, 2016-12-23 16:30:00 +0000, 2016-12-24 16:00:00 +0000] 

Objekte Wie kann ich ein Array wie die unten aus der oben dateObjects erstellen.

let items = [["4:00 pm", "4:15 pm"], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]] 

Ich möchte Daten in einer Tabellenansicht wie das Bild unten zusammengefasst und dargestellt werden. Beachten Sie, dass die Daten und Uhrzeiten in aufsteigender Reihenfolge sind.

Ich habe versucht, die Daten in einem Wörterbuch zu gruppieren, um zu erkennen, dass die Wörterbücher nicht geordnet sind und deshalb würde ich nicht die Reihenfolge bekommen, die ich will.

Appointments

Dieser Code funktioniert, wenn ich ein Array von Elementen liefern. Aber wie kann ich ein Array wie Objekte aus Datumsobjekten erstellen?

let section = ["Thu, 22 Dec", "Fri, 23 Dec", "Sat, 24 Dec"] 

let items = [["4:00 pm", "4:15 pm"], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]] 


override func numberOfSections(in tableView: UITableView) -> Int { 

    return self.section.count 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return self.items[section].count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath) 
    cell.textLabel?.text = self.items[indexPath.section][indexPath.row] 
    cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator 
    return cell 
} 

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    return self.section[section] 
} 


var valueToPass:String! 
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath){ 
    // Get Cell Label 
    let indexPath = tableView.indexPathForSelectedRow! 
    let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell 

    valueToPass = currentCell.textLabel?.text 
    performSegue(withIdentifier: "TableDetailSegue", sender: self) 
} 
+0

Wenn Sie ein Datum bestellen möchten, müssen Sie ein ** Array ** erstellen, das die Daten und Zeiten in einem Unterfeld enthält. Das Array repräsentiert die Abschnitte und die Sub-Arrays die * Zeiten * in den Abschnitten. Die am besten geeignete Methode ist eine benutzerdefinierte Struktur oder Klasse mit Eigenschaften zum Formatieren der Daten in die richtigen Zeichenfolgen. 'NSDictionary' wird sowieso nicht empfohlen. – vadian

+0

Ich kann nicht helfen zu bemerken, dass Sie _aney_ Code nicht gezeigt haben. Keiner. Null. Zilch. Nada. Wie kann jemand sagen, was du falsch machst, wenn du überhaupt nicht zeigst, was du tust? – matt

+0

meinst du sowas? '['Do 22 Dec': ['4:00 PM', '4:15 PM'], 'FR 23 Dec': ['4:00 PM', '4:15 PM', '4:30 PM '],' Sa 24 Dez ': [' 4:00 PM ']] ' – user44776

Antwort

1

Ich sehe nicht, was die Frage ist. Sie sagten:

Ich möchte Daten gruppiert werden und in einer Tabellenansicht wie das Bild unten angezeigt. Beachten Sie, dass die Daten und Uhrzeiten in aufsteigender Reihenfolge sind.

Ich habe versucht, die Daten in einem Wörterbuch zu gruppieren, um zu erkennen, dass die Wörterbücher nicht geordnet sind und deshalb würde ich nicht die Reihenfolge bekommen, die ich will.

Okay, aber dann zeigen Sie den Code, und es gibt keine Wörterbücher überall gesehen werden! Stattdessen haben Sie ein Array und ein Array von Arrays. Das sieht so aus, als müsste es funktionieren. Und sicher genug, kopierte ich Ihren Code in ein Projekt und lief es, und das ist, was ich habe:

enter image description here

Nun, das so ziemlich aussieht wie das, was Sie sagen, Sie wollen. (Außer den Höhen der Dinge; du hast diesen Teil deines Codes nicht angegeben. Aber es sind die richtigen Daten, die richtig und in der richtigen Reihenfolge gruppiert sind.) So scheint es mir, dass du Code hast, der das gewünschte Ergebnis liefert. Daher ist es schwer zu erkennen, worum es bei Ihrer Frage geht.

+0

Entschuldigung für die Verwirrung, aber das eigentliche Problem ist, dass ich Schwierigkeiten habe, ein Array wie dieses zu erstellen (aus einem Array von Datumsobjekten) 'let items = [[" 4:00 pm "," 4:15 pm "], ["4:00 pm", "4:15 pm", "4:30 pm"], ["4:00 pm"]] ' – user44776

+0

Wenn das" das wahre Problem "ist, dann fragen Sie danach. Aber es ist nicht das, was du gefragt hast. Ich kann deine Gedanken nicht lesen! Ich habe die Frage beantwortet, die du gestellt hast. Zeigen Sie den Eingang und die gewünschte Ausgabe an. Deshalb habe ich die Frage abgelehnt - es war eine sehr schlecht umrissene Frage. – matt

Verwandte Themen