7

Widziałem kilka przykładów dodawania obserwatora i obsługi w tej samej klasie, ale chcę wiedzieć, czy możliwe jest dodanie obserwatora w pierwszym widoku kontroler i obsłużyć go w drugim kontrolerze widoku?Dodaj "addObserver" (NSNotificationCenter) w 1 kontroler widoku, obsłużyć w 2nd

Chcę stale wysyłać odległość od kontrolera pierwszego widoku i obsługiwać go w drugim. Sterownik drugiego widoku dodany jako widok podrzędny: addSubview, addChildViewController.

To coś w rodzaju transmisji na Androida.

+0

Dlaczego nie? To * dokładnie * cel 'NSNotificationCenter'. –

Odpowiedz

21

Tak, jest to możliwe. NSNotificationCenter działa dokładnie w ten sposób.

Po pierwsze, będziesz musiał zarejestrować odbiornik w pierwszym kontrolerze widoku, tak jak pokazano poniżej.

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

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

} 

Po drugie, po powiadomieniu z drugiego kontrolera widoku, jak poniżej.

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

System prześle powiadomienie do wszystkich słuchaczy.

+0

Jestem trochę zagubiony, używam "postNotificationName", kiedy chcę powiedzieć "wszystko jest w porządku, obsłużyć zdarzenie", prawda? Ale "coś Zdarzeń" powinno znajdować się w kontrolerze drugiego widoku. Aby wyjaśnić, który kod powinien znajdować się we właściwym kontrolerze. –

+1

jeśli chcesz wysłać powiadomienie z viewcontroller A do viewController B, musisz użyć postnotification z kontrolera widoku A, i zarejestrować odbiornik i obsłużyć go w B, za każdym razem kiedy powiadomienie zostanie wysłane coś, co metoda Happens zostanie wywołana automatycznie, ponieważ zarejestruj słuchacza w tej metodzie. – taffarel

+0

OK, dziękuję człowieku! –

Powiązane problemy