2015-06-25 9 views
6

Attualmente ho 3 file rapidi: ManualViewController, AutoViewController, MainCome aggiornare i dati in tableview usando swift?

ManualViewController è il UIViewController con una vista tabella. AutoViewController è un UIViewController con pochi pulsanti. Main è solo un file rapido con tutti i dati per la visualizzazione tabella.

ManualViewController e AutoViewController sono controllati tramite TabBarController.

Quando eseguo l'app, il contenuto iniziale trovato in Main.swift viene caricato nella vista tabella. Quando passo alla vista successiva, AutoViewController, e clicco su un pulsante per modificare i dati in Main.swift, i dati cambiano. Il problema è quando torno a ManualViewController la tabella contiene ancora i vecchi dati e non quelli aggiornati.

Ho anche provato questo:

override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(false) 
    self.tableView.reloadData() 
} 

E ancora din't lavoro.

+0

Penso che non stai aggiornando la matrice oi dati che viene utilizzato per visualizzare in ManualViewController. –

+0

Ho aggiornato i dati, sono riuscito a stampare i dati aggiornati in ManualViewController ma non caricare i dati aggiornati in tableview. –

+0

Che aspetto hanno i tuoi contenuti in Main.swift? È un oggetto? Una variabile ? Una struttura? –

risposta

3

È possibile utilizzare NSNotificationCenter per aggiornare il proprio tableView da un'altra vista.

vostra dichiarazione -addObserver: deve essere come questo nel tuo tableView controller in viewDidLoad metodo:

override func viewDidLoad() { 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refresh", object: nil) 
} 

E la funzione di questo addObserver piacerà:

func refreshTable(notification: NSNotification) { 

    println("Received Notification") 
    self.tableView.reloadData() 
} 

Ora è possibile inviare la notifica come questo quando si passa al controller tableView:

NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil) 

Verificare il progetto di esempio THIS per ulteriori informazioni.

Spero che ti possa aiutare.

+0

Il tuo esempio è stato perfetto! Grazie! –

+0

Felice di aiutarti .. :) –

1

Per gli altri utenti che vengono qui semplicemente desideroso di sapere come ricaricare i dati in un UITableView, basta fare il seguente: (. I dettagli della risposta accettata rendere difficile trovare lì)

self.tableView.reloadData() 

Problemi correlati