Решение:
Для Xamarin.iOS:
Существует несколько способов передачи данных между ViewControllers.Здесь я рекомендую вам использовать NSNotificationCenter
в вашем случае.Например, если вы хотите изменить A,B,C's
пользовательский интерфейс при выполнении какого-либо заданного действия в D
, вы можете использовать следующий код:
В контроллере D
: опубликовать Notification
в своемукажите действие, вы можете добавить свои личные требования (например: идентификатор продукта, стиль пользовательского интерфейса) в словарь (третий параметр):
NSNotificationCenter.DefaultCenter.PostNotificationName("changeUI",null, new NSDictionary("key1", 1, "key2", 2));
В контроллере A,B,C
, зарегистрироваться в качестве наблюдателя Notification
с именем changeUI
.
NSObject notificationToken;
void Setup()
{
notificationToken = NSNotificationCenter.DefaultCenter.AddObserver((NSString)"changeUI", doChangeUI);
}
void doChangeUI(NSNotification notification)
{
NSDictionary dict = notification.UserInfo;
Console.WriteLine("changeUI");
}
void Teardown()
{
NSNotificationCenter.DefaultCenter.RemoveObserver(notificationToken);
}
Итак, когда контроллер D
отправит Notification
с именем changeUI
, все наблюдатели получат Notification
и выполнят предопределенную функцию (Вот doChangeUI
).Вы можете получить свои личные требования в dict
(notification.UserInfo
) и обновить пользовательский интерфейс в контроллерах.
Вы можете обратиться: NSNotificationCenter
ДляXamarin.Android:
Вы можете использовать Broadcast-Receivers
в Xamarin.Android.Это почти то же самое, что NSNotificationCenter в Xamarin.iOS.
1. Создание Broadcast Receiver
в Деятельности A,B,C
;
2.Публикация Broadcast
в Деятельности D
;
3. Делайте ваши вещи, когда вы получили трансляцию
Более подробно вы можете обратиться к документу: Приемники трансляции