我正在尝试使用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)......
答案 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并用它做任何事情!完成!