11

我正在尝试使用 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) 中找到自己的方式......

4

2 回答 2

10

当你 时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属性在您的通知中检索该对象。

于 2013-03-18T20:49:47.753 回答
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 并使用它做任何事情!完毕!

于 2014-03-12T14:26:19.103 回答