I am trying to post a notification in a view from my app to another one using NSNotificationCenter. So in my destination class I create my observer as follows:
NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", delegate {ChangeLeftSide(null);});
and I have my method:
public void ChangeLeftSide (UIViewController vc)
{
Console.WriteLine ("Change left side is being called");
}
Now from another UIViewController I am posting a notification as follows:
NSNotificationCenter.DefaultCenter.PostNotificationName("ChangeLeftSide", this);
How can I access the view controller that is being passed in my post notification in my destination class? In iOS it is very straight forward but I cannot seem to find my way in monotouch (Xamarin)...
When you AddObserver
, you want to do it in a slightly different way. Try the following:
NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", ChangeLeftSide);
and the declaration of your ChangeLeftSide
method to conform to Action<NSNotification>
expected by AddObserver
- giving you the actual NSNotification
object. :
public void ChangeLeftSide(NSNotification notification)
{
Console.WriteLine("Change left side is being called by " + notification.Object.ToString());
}
So when you PostNotificationName
, you're attaching the UIViewController object to the notification, which can be retrieved in your NSNotification
via the Object
property.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With