2009-11-17 3 views
0

Je ne comprends tout simplement pas, j'ai utilisé les notifications d'un temps trillon, mais aujourd'hui, je ne peux pas sembler obtenir des notifications à envoyer à partir d'un objet particulier. Ceci est un contrôleur de vue ...dans quelles circonstances une notification ne sera PAS publiée?

- (void)buttonPressed:(UIButton*)sender { 
NSLog(@"buttonPressed"); 
[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:self]; 
} 

ce qui est dans un autre contrôleur de vue (dans le init) ..

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

et la méthode ..

-(void)test:(NSNotification *)notification{ 
NSLog(@"it works! "); 
} 

... juste des trucs standard, maintenant si je poste la notification à partir de n'importe quel autre objet cela fonctionne bien, juste ne posterai pas de ce contrôleur de vue unique! Il enregistre même "buttonPressed" donc ce n'est pas comme si le bouton était cassé. Je ne comprends pas.

Des idées?

+0

Je cède! J'ai perdu deux jours à ce sujet. Très très étrange en effet. Je l'ai réécrit et utilisé la délégation à la place. Toutes mes autres notifications fonctionnent parfaitement bien sauf celle-ci. Bizarre.! – user139816

Répondre

0

S'agit-il d'un contrôleur de vue que vous avez créé en le faisant glisser dans Interface Builder? Si c'est le cas, la méthode -init ne sera pas appelée (la -initWithCoder sera). Toutefois, si vous devez configurer des éléments à partir de l'interface, remplacez la méthode -awakeFromNib et entrez votre code d'installation.

+0

Désolé que ce soit moi abrège stupidement mon explication. J'ai un journal après 'addObserver' et ce morceau de code fonctionne bien. C'est la chose que tous les journaux tirent, et dans le bon ordre, mais pas de communication par notification. Je suis déconcerté. Je vais réécrire le tout, pour voir si quelque chose saute sur moi .... – user139816

0

Avez-vous essayé de passer nil au lieu de self pour l'objet: argument lorsque vous envoyez? Je pensais que nul signifiait que vous obtiendriez chaque notification avec ce nom mais ce pourrait ne pas être le cas.

En outre, essayez de vous abonner à la notification juste avant de l'envoyer et de voir si cela est appelé.

+0

Il utilise nil lors de l'ajout de l'observateur, donc les notifications ne sont pas filtrées pour inclure uniquement celles avec un objet particulier. L'affichage d'une notification avec un objet ne doit pas modifier la façon dont il est reçu. –

+0

C'est ce que je pensais aussi, mais ça ne fait jamais de mal d'essayer, et pourrait le pousser à penser à autre chose qu'il pourrait mal faire. –

Questions connexes