47 votes

Comment passer userInfo dans NSNotification?

J'essaie d'envoyer des données à l'aide de NSNotification mais reste bloqué. Voici mon code:

 // Posting Notification
NSDictionary *orientationData;
if(iFromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    orientationData = [NSDictionary dictionaryWithObject:@"Right"
                                                  forKey:@"Orientation"];
}

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter postNotificationName:@"Abhinav"
                                  object:nil
                                userInfo:orientationData];

// Adding observer
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(orientationChanged)
                                             name:@"Abhinav"
                                           object:nil];
 

Maintenant, comment récupérer ce dictionnaire userInfo dans mon sélecteur orientationChanged ?

92voto

JustSid Points 16366

Vous obtenez un objet NSNotification transmis à votre fonction. Ceci inclut le nom, les objets et les informations utilisateur que vous avez fournis au NSNotificationCenter.

 - (void)orientationChanged:(NSNotification *)notification
{
    NSDictionary *dict = [notification userInfo];
}
 

23voto

Manny Points 3335

Votre sélecteur doit avoir : pour accepter les paramètres.
par exemple

 @selector(orientationChanged:)
 

puis, dans la déclaration de méthode, il peut accepter le paramètre NSNotification .

6voto

Amit Singh Points 1003

Vous publiez la notification correctement. Veuillez modifier l’observateur de notifications comme suit.

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

- (void)orientationChanged:(NSNotification *)notification
{
    NSDictionary *dict = [notification userInfo];
}
 

J'espère que cette solution fonctionnera pour vous ..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X