【发布时间】:2014-02-27 17:02:14
【问题描述】:
我有很多地方。这些地方中的每一个都显示在同一屏幕上的 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
...或任何其他在我每次重新启动应用程序时都会更改的随机组合。 请注意,如果我启用用户的位置,我的其中一个 pin 注释可以将其标题随机更改为“当前位置”。
我很确定我注意到正确填充或访问注释。你有什么线索吗?
谢谢!
编辑:这篇文章似乎说你必须扫描你的注释数组,寻找匹配的标题,然后选择相关的注释:Open Map Annotation from Selected Row in Table View 这真的是唯一的方法吗?由于两个图钉可能有相同的标题,这似乎有点危险......
【问题讨论】:
-
您应该能够将行值分配给 Annotation 的
tag并匹配它而不是标题? -
MKPointAnnotation 没有任何“标签”属性。也许我将不得不使用自定义 AnnotationView...
-
啊抱歉,我以前用过
MKPinAnnotationView,它确实有标签。我想知道在那之后您是否可以使用[self.myMap viewWithTag:]来获取正确的并以这种方式选择它?
标签: ios mkmapview mapkit mkannotation