如何在android和ios中的向后导航时传播更改?

时间:2018-12-08 15:58:51

标签: xamarin.ios xamarin.android back-stack popviewcontroller

我有一个Xamarin.Android和Xamarin.iOS应用程序。该应用程序具有一个称为PRODUCT的数据模型。在各种屏幕中,我们将根据查询或其他条件列出产品。假设用户通过选择特定产品从Activity-A(在iOS中为ViewController)导航到Activity-B,然后进一步导航到C,D等。基于Activity-D中的用户交互,我需要在所有其他活动中更新UI,同时从D导航回A。我如何在后退堆栈中传播更改,或者如何在导航时相应地更新UI。某些活动可能直接在其中包含UI元素,而在其他地方其可能是列表的一部分。该产品将具有唯一的ID。

1 个答案:

答案 0 :(得分:1)

解决方案:

对于Xamarin.iOS:

有几种方法可以在ViewController之间传递数据。在这里,我建议您使用NSNotificationCenter。例如,如果您想在A,B,C's中执行一些指定操作时更改D UI,则可以使用以下代码:

在控制器D中:在您指定的操作中发布Notification,您可以在字典(第三个参数)中添加个人要求(例如:产品ID,UI样式):

NSNotificationCenter.DefaultCenter.PostNotificationName("changeUI",null, new NSDictionary("key1", 1, "key2", 2));

在控制器A,B,C中,注册为名为Notification的{​​{1}}的观察者。

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的{​​{1}},所有观察者都将收到Notification并执行预定义的功能(这里是{{1} }。您可以在changeUINotification)中获得个人要求,并在控制器中更新UI。

您可以参考:NSNotificationCenter

对于Xamarin.Android:

您可以在Xamarin.Android中使用doChangeUI。与Xamarin.iOS中的NSNotificationCenter几乎相同。

1。在活动dict中创建notification.UserInfo

2。在活动Broadcast-Receivers中发布Broadcast Receiver

3。收到广播后做你的事情

您可以参考该文档以获取更多详细信息:broadcast-receivers