我有一些地方的数组。每个地方都显示在同一屏幕上的MapView和TableView上。当我点击表格视图上相应的行时,我想弹出一个地点的注释。以编程方式从数组中选择地图注释
我有下面的代码来填充注释:
for (int i = 0; i < [self.myPlaces count]; i++)
{
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
SPlaces *ev = [self.myPlaces objectAtIndex:i];
point.coordinate = CLLocationCoordinate2DMake([ev.location.latitude doubleValue], [ev.location.longitude doubleValue]);
point.title = ev.title;
point.subtitle = ev.type.name;
[self.myMap addAnnotation:point];
}
这个代码,以显示注释当在TableView中选择了行:
//row = tapped row on TableView
[self.myMap selectAnnotation:[[self.myMap annotations] objectAtIndex:row] animated:YES];
的问题是,注释似乎在myMap注释数组中有一个随机索引。 我的意思是,我想有这种行为:
users taps row 0 on Table view => annotation of pin 0 pops up on the map
users taps row 1 on Table view => annotation of pin 1 pops up on the map
users taps row 2 on Table view => annotation of pin 2 pops up on the map
但不是这个,我得到:
users taps row 0 on Table view => annotation of pin 1 pops up on the map
users taps row 1 on Table view => annotation of pin 0 pops up on the map
users taps row 2 on Table view => annotation of pin 2 pops up on the map
...或者每个I重启时间更改任何其他随机组合应用程序。 请注意,如果我启用了用户的位置,我的一个pin注释可以将其标题随机更改为“当前位置”。
我很确定我正在填写或正确访问注释。你有任何线索吗?
谢谢!
编辑:这篇文章似乎是说,你要扫描您的注解阵列,寻找匹配的标题,然后选择相应的注解:Open Map Annotation from Selected Row in Table View 这真的是唯一的出路?由于两个引脚可能共享相同的标题,所以看起来有点危险......
你应该能够行值分配到注解的'tag'和与之相匹配上,而不是冠军? – Flexicoder
MKPointAnnotation没有任何“标签”属性。也许我将不得不使用自定义AnnotationView ... –
对不起,我已经使用'MKPinAnnotationView'在过去有标签。我想知道如果你可以使用'[self.myMap viewWithTag:]'来获得正确的并且选择它吗? – Flexicoder