7

Ho visto alcuni esempi sull'aggiunta di observer e handle nella stessa classe, ma quello che voglio sapere è se è possibile aggiungere observer in prima vista controller e gestirlo nel controller di seconda visione?Aggiungere 'addObserver' (NSNotificationCenter) in un 1 ° controller di visualizzazione, gestire in 2nd

Desidero inviare costantemente la distanza dal controller della prima visualizzazione e gestirla nella seconda. Il 2 ° controller di visualizzazione aggiunto come vista secondaria: addSubview, addChildViewController.

È qualcosa come trasmissione in Android.

+0

Perché no? Questo è esattamente * lo scopo di 'NSNotificationCenter'. –

risposta

21

Sì, è possibile. NSNotificationCenter funziona esattamente in questo modo.

In primo luogo, è necessario registrare l'ascoltatore nel primo controller della vista come indicato di seguito.

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil]; 
} 

-(void)somethingHappens:(NSNotification*)notification 
{ 

} 

In secondo luogo, inviare la notifica dal secondo controller della vista come di seguito.

[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj]; 

Il sistema trasmetterà la notifica a tutti gli ascoltatori.

+0

Sono un po 'confuso, uso' postNotificationName 'quando voglio dire' tutto è ok, gestire l'evento ', giusto? Ma "qualcosaHappens" dovrebbe essere nel 2 ° controller di visualizzazione. Giusto per chiarire quale codice dovrebbe essere nel controller corretto. –

+1

se si desidera inviare una notifica da viewcontroller A a viewController B, quindi è necessario utilizzare la postnotifica da un controller di visualizzazione e registrare il listener e gestirlo in B, ogni volta che viene inviata una notifica qualcosa. Il metodo Happens verrà chiamato automaticamente, dal momento che registrare l'ascoltatore su quel metodo. – taffarel

+0

OK, grazie amico! –

Problemi correlati