我应该将 Delegate 设置为 self 以使用事件委托吗?
Should I set Delegate to self to use an event delegate?
我正在学习事件委托。以下代码将折线添加到地图视图。但是,它没有添加行。是因为我没有设置delegate吗?
var locations = new[]
{
new CLLocationCoordinate2D (13.0070069814252, 77.5551893019917),
new CLLocationCoordinate2D (13.0070831090451, 77.5543436352358)
};
MKPolyline processedPolyline = MKPolyline.FromCoordinates(locations.ToArray());
map.OverlayRenderer += delegate(MKMapView mapView, IMKOverlay overlay)
{
MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
polylineRenderer.LineWidth = 4.0f;
polylineRenderer.StrokeColor = UIColor.Green;
return polylineRenderer;
};
map.AddOverlay(processedPolyline);
在 Xamarin 中,C# 事件通常用于代替 Objective-C 样式委托(尽管后一种选项几乎始终可用)。 Xamarin 有一些关于这些概念的[文档]。
无论如何,你的代码对我来说工作正常:
P.S。您不需要 locations.ToArray()
- 只需 locations
就足够了,因为它已经是一个数组。
我正在学习事件委托。以下代码将折线添加到地图视图。但是,它没有添加行。是因为我没有设置delegate吗?
var locations = new[]
{
new CLLocationCoordinate2D (13.0070069814252, 77.5551893019917),
new CLLocationCoordinate2D (13.0070831090451, 77.5543436352358)
};
MKPolyline processedPolyline = MKPolyline.FromCoordinates(locations.ToArray());
map.OverlayRenderer += delegate(MKMapView mapView, IMKOverlay overlay)
{
MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
polylineRenderer.LineWidth = 4.0f;
polylineRenderer.StrokeColor = UIColor.Green;
return polylineRenderer;
};
map.AddOverlay(processedPolyline);
在 Xamarin 中,C# 事件通常用于代替 Objective-C 样式委托(尽管后一种选项几乎始终可用)。 Xamarin 有一些关于这些概念的[文档]。
无论如何,你的代码对我来说工作正常:
P.S。您不需要 locations.ToArray()
- 只需 locations
就足够了,因为它已经是一个数组。