7

Ich sah ein paar Beispiele über das Hinzufügen von Beobachter und Handle in der gleichen Klasse, aber was ich wissen möchte, ist es möglich Beobachter in der ersten Ansicht hinzuzufügen Controller und handle es in Second-View-Controller?Hinzufügen von 'addObserver' (NSNotificationCenter) in einer 1. Ansicht Controller, Handle in 2.

Ich möchte ständig Abstand von der ersten Ansicht Controller senden und es in der zweiten handhaben. Der zweite Ansicht-Controller wurde als Unteransicht hinzugefügt: addSubview, addChildViewController.

Es ist so etwas wie Sendung in Android.

+0

Warum nicht? Das ist genau der Zweck von 'NSNotificationCenter'. –

Antwort

21

Ja, es ist möglich. NSNotificationCenter funktioniert genau so.

Zuerst müssen Sie den Listener im ersten View-Controller wie folgt registrieren.

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

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

} 

Zweitens, posten Sie die Benachrichtigung von der zweiten Ansicht Controller wie folgt.

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

Das System sendet die Benachrichtigung an alle Listener.

+0

Ich bin ein wenig verwirrt, ich benutze "postNotificationName", wenn ich sagen will "alles ist in Ordnung, behandeln Ereignis", richtig? Aber 'somethingHappens' sollte in der zweiten Ansicht Controller sein. Nur um zu klären, welcher Code im richtigen Controller sein sollte. –

+1

Wenn Sie eine Benachrichtigung von viewcontroller A an viewController B senden möchten, dann müssen Sie postnotification von einem View-Controller verwenden und den Listener registrieren und in B behandeln, jedes Mal wenn eine Benachrichtigung gepostet wird, wird die sumethapp-Methode automatisch aufgerufen, da Sie Registrieren Sie den Listener für diese Methode. – taffarel

+0

OK, danke Mann! –