2013-03-18 5 views
7

Ich versuche, eine Benachrichtigung in einer Ansicht von meiner App an eine andere mit NSNotificationCenter zu senden. Also in meinem Zielklasse erstelle ich meinen Beobachter wie folgt:Xamarin NSNotificatioCenter: Wie kann ich das NSObject übergeben bekommen?

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

und ich habe meine Methode:

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

nun von einem anderen UIViewController ich bin Entsendung eine Meldung wie folgt:

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

Wie kann ich auf den View-Controller zugreifen, der in meiner Post-Benachrichtigung in meiner Zielklasse übergeben wird? In iOS ist es sehr einfach, aber ich kann nicht meinen Weg in Monotouch finden (Xamarin) ...

Antwort

0

ich die Antwort gefunden, hier sind die Veränderungen, die auf dem Code vorgenommen werden müssen, um die ich in der Frage gestellt:

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 
} 

Und der Beobachter erstellt:

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

Jetzt können Sie Darsteller oder Typ überprüfen Sie das NSObject und machen Sie alles damit! Erledigt!

+1

Nur lustig verbringen Sie ein Jahr, um die Antwort zu finden, die unten veröffentlicht wird :) – Injectios

6

Wenn Sie AddObserver, möchten Sie es auf eine etwas andere Weise tun. Versuchen Sie Folgendes:

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

und die Erklärung Ihrer ChangeLeftSide Methode Action<NSNotification> von AddObserver erwartet anzupassen - Sie die tatsächliche NSNotification Objekt geben. :

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

Also, wenn Sie PostNotificationName, du bist die UIViewController Objekt auf die Benachrichtigung Befestigung, die in Ihrer NSNotification über die Object Eigenschaft abgerufen werden können.

+0

Ah poop, habe deine Bearbeitung nicht gesehen. – Luke

+0

Danke aber :) Definitiv haben Sie eine bessere Formulierung als meine! –