H. L'esempio di codice di Serdar è corretto, è il modo per accedere a un altro controller di visualizzazione di una scheda e dargli dati.
Ricordare che quando si passa un array in Swift, you're passing it by value, a differenza di Objective-C, che lo passa per riferimento. Ciò significa che le modifiche apportate dal secondo controller della vista non si rifletteranno sul controller della prima visualizzazione, poiché il secondo utilizza una copia dell'array, non la stessa matrice. Se vuoi che entrambi i controller di vista modifichino lo stesso array, metti l'array in una classe e passa una singola istanza di quella classe.
Alcune altre considerazioni: Si potrebbe sottoclasse il TabBarController per dargli una proprietà che ti memorizzare i dati, e che sarebbe a disposizione di tutte le schede utilizzando:
if let tbc = tabBarController as? YourCustomTabBarSubclass {
println("here's my data \(tbc.array)")
}
In tale situazione, si sarebbe accedere allo stesso array da più schede, quindi le modifiche in una scheda si rifletteranno altrove.
Si sconsiglia l'approccio dell'utilizzo del delegato dell'app come postazione centralizzata per archiviare i dati. Questo non è lo scopo del delegato dell'applicazione. Il suo scopo è gestire le chiamate delegate per l'oggetto dell'applicazione.
View I controller devono contenere tutti i dati, racchiusi in essi, di cui hanno bisogno per svolgere il loro lavoro. Hanno una connessione con i loro dati di modello (come l'array o un riferimento a un database o un contesto di oggetti gestiti) invece che un controller di visualizzazione raggiunge un altro oggetto attraversando un grafico del controller di visualizzazione o andando nel delegato o addirittura usando una variabile globale. Questa struttura modulare e autonoma di View Controller consente di ristrutturare l'app per progetti simili ma unici su dispositivi diversi, come presentare un controller di visualizzazione in un popover su un dispositivo (come un iPad) e presentarlo a schermo intero su un altro, ad esempio un iPhone.
[Esempio usando un unwind segue] (https://stackoverflow.com/a/47751962/3681880). Questo è utile solo se si sta navigando dalla discendente di una scheda alla radice di un'altra scheda. – Suragch