Xamarin NSNotificatioCenter:我怎样才能通过NSObject?

时间:2013-03-18 20:13:05

标签: c# ipad xamarin.ios nsnotificationcenter

我正在尝试使用NSNotificationCenter在我的应用视图中向其他人发布通知。所以在我的目标类中,我按如下方式创建我的观察者:

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)......

2 个答案:

答案 0 :(得分:8)

当你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中检索。

答案 1 :(得分: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并用它做任何事情!完成!