Xamarin NSNotificatioCenter: как я могу получить передаваемый NSObject?
Я пытаюсь отправить уведомление в представлении из моего приложения в другое, используя 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);
Как я могу получить доступ к контроллеру вида, который передается в моем уведомлении post в моем классе назначения? В iOS это очень прямолинейно, но я, кажется, не могу найти свой путь monotouch (Xamarin)...
2 ответа:
Когда вы
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.
Я нашел ответ, вот изменения, которые нужно внести в код, который я разместил в вопросе:
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 и делать с ним все, что угодно! Готово!