/ / Come posso aggiornare il contenuto di una vista prima di popViewController? - ios, uiviewcontroller, uinavigationcontroller, viewdidload, popviewcontroller

come posso aggiornare il contenuto di una vista prima di popViewController? - ios, uiviewcontroller, uinavigationcontroller, viewdidload, popviewcontroller

ne ho due viewcontroller. Il primo controller di visualizzazione include una mappa eannotazioni, quando tocco un'annotazione arriva la mia seconda vista. Alla seconda vista tocchi il pulsante Elimina. Quindi il contenuto della mia prima vista deve essere aggiornato prima di questo codice: [self.navigationController popViewControllerAnimated:YES]; devo chiamare viewdidload metodo o aggiornare il contenuto della mia vista precedente dalla seconda vista.

risposte:

4 per risposta № 1

- (void) viewWillAppear: animato

Non sono sicuro se è stato chiamato prima [self.navigationController popViewControllerAnimated: YES]; ma certamente prima di vedere la vista. Effettua una chiamata per ricaricare le annotazioni della tua mappa al suo interno.

Assicurati inoltre di chiamare viewWillAppear super.

Se entrambe le viste non funzionano dallo stesso oggetto dati, è necessario un delegato per inviare i dati indietro.


0 per risposta № 2

Puoi usare uno schema di delegati, come detto da Andy, o NSNotificationCenter . Io personalmente uso NSNotificationCenter.

Per utilizzare il centro notifiche è necessario aggiungere osservatori alle classi del controller di visualizzazione. Quando apri la visualizzazione, invii una notifica al centro, diciamo che la tua notifica è update quando comunichi al centro con update , il centro dice a qualunque classe abbia update eseguire un metodo .... è semplice.

[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil];

controlla questa risposta per il codice completo: IOS: sposta indietro di due visualizzazioni


0 per risposta № 3

ViewWillApear o ViewDidApear verranno chiamatipoiché vi sono modifiche agli oggetti nel viewcontroller, ma se si desidera modificare viewcontrollerA da un altro viewcontrollerB, è necessario che NSNotificationCenter richiami la funzione da viewcontrollerA

puoi sempre usare NSNotificationCenter per aggiornare il tuo ViewController principale

Al tuo genitore viewcontroller metti questo:

//since child view controller calls turnItOff, notification center calls function "turnButtonCountinuesOff"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(turnButtonCountinuesOff) name:@"turnItOff" object:nil];

turnButtonCountinuesOff è la tua funzione sul controllore viewcontroller

A tuo figlio viewcontroller metti questo:

//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];

spero che sia d'aiuto.