H. Serdar's Codebeispiel ist richtig, das ist der Weg, um auf den View-Controller eines anderen Tabs zuzugreifen und ihm Daten zu geben.
Beachten Sie, dass, wenn Sie ein Array in Swift, you're passing it by value übergeben, im Gegensatz zu Objective-C, die es als Referenz übergibt. Dies bedeutet, dass Änderungen, die von Ihrem zweiten Ansichts-Controller vorgenommen wurden, nicht in Ihrem ersten Ansichts-Controller angezeigt werden, da Ihr zweiter eine Kopie des Arrays und nicht das gleiche Array verwendet. Wenn Sie möchten, dass beide Ansichtscontroller dasselbe Array ändern, fügen Sie das Array in eine Klasse ein und übergeben Sie eine einzelne Instanz dieser Klasse.
einige andere Überlegungen: mit Sie die TabBarController Unterklasse könnte es eine Eigenschaft zu geben, die Ihre Daten speichern werden, und das würde auf alle Registerkarten zur Verfügung:
if let tbc = tabBarController as? YourCustomTabBarSubclass {
println("here's my data \(tbc.array)")
}
In dieser Situation würden Sie Zugriff auf das gleiche Array über mehrere Registerkarten, so dass Änderungen in einem Register an anderer Stelle widergespiegelt werden.
Ich empfehle gegen den Ansatz der Verwendung Ihrer App Delegate als zentraler Ort, um Daten zu speichern. Das ist nicht der Zweck des Delegaten der Anwendung. Sein Zweck besteht darin, Delegat-Aufrufe für das Anwendungsobjekt zu behandeln.
Ansichtssteuerungen sollten alle in ihnen eingeschlossenen Daten enthalten, damit sie ihre Arbeit erledigen können. Sie haben eine Verbindung zu ihren Modelldaten (z. B. zu Ihrem Array oder einem Verweis auf eine Datenbank oder einen verwalteten Objektkontext), anstatt einen View-Controller zu einem anderen Objekt zu bewegen, indem er ein View-Controller-Diagramm durchläuft oder in den Delegate oder gar geht Verwenden einer globalen Variablen. Mit dieser modularen, in sich geschlossenen Konstruktion von View Controllern können Sie Ihre App für ähnliche, aber einzigartige Designs auf verschiedenen Geräten umstrukturieren, z. B. einen View-Controller in einem Popover auf einem Gerät (z. B. einem iPad) präsentieren und auf einem anderen Bildschirm als Vollbild darstellen ein iPhone.
[Beispiel Verwenden eines Abwicklungssegments] (https://stackoverflow.com/a/47751962/3681880). Dies ist jedoch nur dann sinnvoll, wenn Sie vom Nachfolger einer Registerkarte zum Stamm einer anderen Registerkarte navigieren. – Suragch