我有一个Xamarin.Forms页面,其中包含许多引脚的地图。我已经构建了一个自定义iOS渲染器来更改显示图钉的图像。
一旦我分配了GetViewForAnnotation委托,我的Xamarin.Forms类就不再收到“Clicked”事件。我可以通过自定义渲染器访问它,我相信,但是当用户点击引脚的标题时我想要做的是将另一个Xamarin.Forms页面推送到导航堆栈,我不知道如何控制从我的Xamarin.iOS应用程序中回到我的Xamarin.Forms应用程序。
我有一种感觉,我需要在其他一些地方使用这种类型的逻辑......我需要处理一个CustomRenderer事件,然后将控制权传递给Xamarin.Forms应用程序以进行导航或其他目的。
所以我想说几个方向:
1 - 更直接 - 当点击地图的图钉时,即使iOS应用通过CustomRenderer处理创建引脚,也可以在Xamarin.Forms应用中触发我的“Clicked”事件
2 - 更高级和可自定义 - 将控制权传递回我的Xamarin.Forms应用程序(可能会引发与渲染器级别相关的事件?)
我现在更喜欢将Clicked事件恢复,但我猜测,在CustomRenderer中分配GetViewForAnnotation事件后,这可能无效。
答案 0 :(得分:0)
根据我的阅读,您可以在渲染器中检测到注释点击。
在OnElementChanged
的渲染器中,您可以访问与其相关的View
Xamarin.Forms
中的PCL
。
考虑未来的几种可能性: -
a)使用MessagingCenter
传达兴趣之间的信息(参见
here)。
b)使用标准的活动提升,即public event
EventHandler<someEventArgs> OnSomeEvent
通过您的View
PCL
。
c)如果您的ICommand
View
使用PCL
方法
更多MVVM
定向,并以这种方式调用。
通过View
/ Page
收到通知后,根据您的工作地点,您可以根据您在特定平台上提供的信息进行正常导航PCL
中的渲染器。