2012-04-23 11 views

risposta

18

È possibile passare i dati nell'elemento userDictionary della chiamata API

NSDictionary *aDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: 
          anObject, @"objectName", 
          anotherObject, @"objectId", 
          nil] autorelease]; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"AnythingAtAll" object:nil userInfo:aDictionary]; 

È possibile recuperare il dizionario dalla notifica in entrata che si osserva. Aggiungi l'osservatore prima di pubblicare la notifica.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(anyAction:) name:@"AnythingAtAll" object:nil]; 

questo potrebbe essere nel metodo init o di un metodo viewDidLoad

-(void)anyAction:(NSNotification *)anote 
{ 
NSDictionary *dict = [anote userInfo]; 
AnyClass *objectIWantToTransfer = [dict objectForKey:@"objectName"]; 
} 

nota che è necessario rimuovere l'oggetto in qualità di osservatore nel metodo dealloc.

[[NSNotificationCenter defaultCenter] removeObserver:self] 
+0

grazie per il vostro aiuto. Tuttavia, in che modo sei ** addObserver ** prima di eseguire ** postNotificationName ** in seguito. In [here] (http://stackoverflow.com/questions/10283014/can-not-catch-a-notification-in-iphone), faccio la stessa cosa che fai tu, ma il ** selector ** non viene chiamato dopotutto. – tranvutuan

+0

Sì per chiarire è necessario aggiungere l'osservatore prima di pubblicare la notifica. Solitamente ciò avverrà nei metodi init o viewdidload. –

+0

Ho bisogno di qualche altro esempio ... per favore fornisci qualche altro esempio di postnotifiche. – vijay

Problemi correlati