2013-03-18 21 views
7

我想從我的應用程序發佈通知到另一個使用NSNotificationCenter的視圖。所以在我的目的地類創建我的觀察如下:Xamarin NSNotificatioCenter:我怎樣才能讓NSObject通過?

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

,我有我的方法:

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

現在我發佈一個通知如下:

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

如何訪問正在我的發佈通知中傳遞到目標類中的視圖控制器?在iOS中它是非常直接的,但我似乎無法找到我的方式monotouch(Xamarin)...

回答

0

我找到了答案,在這裏是需要在我張貼的問題的代碼所做的更改:

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 
} 

和觀察者創建:

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

現在你可以強制轉型或者類型檢查NSObject,並用它做任何事情!完成!

+1

只是有趣的你花了一年的時間找到下面發佈的答案:) – Injectios 2016-04-18 13:01:54

6

當你AddObserver,你想要以一個稍微不同的方式做到這一點。請嘗試以下操作:

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

和你ChangeLeftSide方法的聲明符合Action<NSNotification>AddObserver預期 - 給你的實際NSNotification對象。 :

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

所以,當你PostNotificationName,您要附加的的UIViewController對象的通知,您也可以在NSNotification通過Object屬性檢索。

+0

啊大便,沒有看到你的編輯。 – Luke 2013-03-18 20:50:26

+0

謝謝,雖然:)肯定你有比我更好的措辭! – 2013-03-18 21:08:07