【发布时间】:2015-05-03 03:27:02
【问题描述】:
我为 iOS 创建了一个 Xamarin.Forms.Maps 地图。
我添加了一些图钉
我将点击处理程序添加到引脚
这些都很好
用户现在拖动地图并触发我的 onDrag 处理程序
然后我想刷新图钉以反映新的视图区域 这也有效 - 除了现在忽略引脚上的 Clicked 事件。显示信息框,但当我单击信息框时,处理程序本身永远不会被调用。这在第一次设置时有效,但在更改引脚后无效。
我已尝试在拖动时创建新引脚:
map.Pins.Clear();
foreach (Place p in PlaceList){
Pin newPin = new Pin();
pin.Label = p.PlaceName;
pin.Clicked += DoPinClick;
}
然后我尝试在拖动时重用现有引脚:
Pin pin;
for (int i = 0; i < PlaceList.Count; i++) {
if (i > 9)
// max of 10 pins
break;
Place p = PlaceList [i];
if (i >= map.Pins.Count - 1) {
// a new pin to be created and added to the map pins
pin = new Pin();
pin.Clicked += DoPinClick;
pin.Label = p.PlaceName;
map.Pins.Add (pin);
} else {
// there was already a pin in that slot, get it and reuse it
pin = map.Pins [i];
pin.Label = p.PlaceName;
}
pin.Position = p.Position;
// copy the pin into the slot it occupies already
map.Pins [i] = pin;
}
但无论我遵循事件处理程序的哪种方法都只能在我更改引脚之前有效。
【问题讨论】:
-
这可能无关紧要,但您是否尝试在清除现有列表之前删除事件处理程序?
-
我没有,但我刚刚尝试过,没有任何区别。