Ziel: Übergeben Sie ein Array von Informationen aus Tabellenansicht zu einer anderen Tabellenansicht mithilfe der Daten erstellt.Übergeben Array von Tabellenansicht zu Tabellenansicht
Problem: kann nicht die Array-Informationen zugreifen Tableviewcontroller in preparingForSegue
Ergebnis: Tableviewcontroller enthalten Mitarbeiternamen, und wenn Klick auf jedem des Mitarbeiters, geht es um die Details zu zeigen Anordnungen von Information.
1) Employee.swift (Modell für Daten)
struct Employee {
var name: String
var food: [String]
var ingredients: [String]
init(name: String, food: [String], ingredients: [String]) {
self.name = name
self.food = food
self.ingredients = ingredients
}
}
2) TableViewController.swift (zeigt den Namen des Mitarbeiters) Alles funktioniert hier gut mit den Codes, die einzige Sache, die ich bin hier zu kämpfen ist die Weitergabe der Information an den nächsten Viewcontroller. Im Kommentarbereich habe ich versucht, zu schreiben destination.food = lists [indexPath.row] .food. Dies hat nicht wie erwartet funktioniert. Ich versuche, die Array-Informationen abzurufen.
class VillageTableViewController: UITableViewController {
var lists : [Employee] = [
Employee(name: "Adam" , food: ["Fried Rice","Fried Noodles"], ingredients: ["Insert oil, cook","Insert oil, cook"])]
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showVillages" {
if let indexPath = self.tableView.indexPathsForSelectedRows {
let destination = segue.destination as? DetailsViewController
// pass array of information to the next controller
}
}
}
3) DetailsTableViewController.swift (zeigt eine Anordnung von Informationen) Code gut funktioniert. Ich habe die Idee, ein leeres Array zu erstellen und die Informationen werden von TableViewController übergeben. Im Kommentarbereich, schreibe ich dann cell.textLabel? .text = Nahrung [indexPath.row] und cell.subtitle? .text = Zutaten [indexPath.row]
class DetailsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var food:[String] = []
var ingredients:[String] = []
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! DetailsTableViewCell
//this is where I will get the information passed from the array
return cell
}
Bitte beraten. Ich habe die letzten paar Stunden recherchiert und konnte es noch nicht herausfinden. Bedenken Sie, dass der gesamte Code hier funktioniert und ich habe nur Schwierigkeiten beim Zugriff auf die Array-Informationen.
Edit: Ich suche nach Arrays zugegriffen werden und auf DetailsTableViewController angezeigt werden.
Wenn Sie sagen, „Das wie erwartet nicht funktioniert“, was tatsächlich passiert ist – Spads
Daniel zeigte die Verbindungskette. Ich suche nach einem Array. Bitte lesen Sie die Fragen richtig. –
@SwiftQuestions, es spielt keine Rolle, welcher _type_ der Daten zwischen den View-Controllern über das Segment übergeben werden soll; Wenn Sie einen vollständig benutzerdefinierten Datentyp erstellen, müssen Sie das Konzept der Übergabe nicht neu erlernen. – holex