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.