2013-03-18 9 views
7

Próbuję wysłać powiadomienie w widoku z mojej aplikacji na inną przy użyciu NSNotificationCenter. Więc w mojej klasie docelowej tworzę obserwatora następująco:Xamarin NSNotificatioCenter: Jak mogę przekazać NSObject?

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", delegate {ChangeLeftSide(null);}); 

i mam metodę:

public void ChangeLeftSide (UIViewController vc) 
{ 
    Console.WriteLine ("Change left side is being called"); 
} 

teraz z innego UIViewController jestem delegowania powiadomienie następująco:

NSNotificationCenter.DefaultCenter.PostNotificationName("ChangeLeftSide", this); 

Jak uzyskać dostęp do kontrolera widoku, który jest przekazywany w moim powiadomieniu pocztowym w mojej klasie docelowej? W iOS jest to bardzo proste, ale nie mogę znaleźć drogi w Monotouch (Xamarin) ...

Odpowiedz

0

Znalazłem odpowiedź, oto zmiany, które muszą być wykonane na kodzie napisałem w pytaniu:

public void ChangeLeftSide (NSNotification notification) 
{ 
    Console.WriteLine ("Change left side is being called"); 
    NSObject myObject = notification.Object; 
    // here you can do whatever operation you need to do on the object 
} 

A obserwator został stworzony:

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", ChangeLeftSide); 

Teraz możesz rzut lub typ sprawdź NSObject i zrób z nim wszystko! Gotowe!

+1

Po prostu zabawnie spędzasz rok, aby znaleźć odpowiedź, która jest zamieszczona poniżej :) – Injectios

6

Po AddObserver, chcesz zrobić to w nieco inny sposób. Spróbuj wykonać następujące czynności:

NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", ChangeLeftSide); 

i deklarację metodę ChangeLeftSide celu dostosowania do Action<NSNotification> oczekiwanego przez AddObserver - co daje rzeczywistą NSNotification obiekt. :

public void ChangeLeftSide(NSNotification notification) 
{ 
    Console.WriteLine("Change left side is being called by " + notification.Object.ToString()); 
} 

Więc kiedy PostNotificationName, jesteś mocowania przedmiotu UIViewController do zgłoszenia, które mogą być pobierane w swojej NSNotification za pośrednictwem właściwości Object.

+0

Ah kupa, nie widziałem twojej edycji. – Luke

+0

Dziękuję jednak :) Zdecydowanie masz lepsze brzmienie niż moje! –