当我在注释上调用MKMapView方法setSelected:animated:时,它不起作用。但如果我下次使用不同的注释调用它,它就会开始工作。
任何人都有任何可能出错的想法? 感谢
代码(2种相关方法):
- (void)viewDidLoad {
[super viewDidLoad];
annotations = [[NSMutableArray arrayWithCapacity:30] retain];
for (NSDictionary *entry in entries) {
double lat = [[entry objectForKey:@"lat"] doubleValue];
double lon = [[entry objectForKey:@"lon"] doubleValue];
NSString *PLZ = [entry objectForKey:@"PLZ"];
NSString *name = [NSString stringWithFormat:@"%@%@", PLZ.length != 0? [NSString stringWithFormat:@"%@, ", PLZ] : @"", [entry objectForKey:@"Ort"]];
NSString *address = [NSString stringWithFormat:@"%@ - %@", [entry objectForKey:@"Grund"], [entry objectForKey:@"Zeit"]];
CLLocationCoordinate2D coordinate;
coordinate.latitude = lat;
coordinate.longitude = lon;
MyLocation *annotation = [[[MyLocation alloc] initWithName:name address:address coordinate:coordinate] autorelease];
[mapView addAnnotation:annotation];
[annotations addObject:annotation];
}
NSLog(@"LOaded");
[self zoomToFitMapAnnotations];
}
- (void)showAnnotation:(int)i {
if (i <= [annotations count]) {
[mapView setSelectedAnnotations:[NSArray arrayWithObject:[annotations objectAtIndex:i]]];
}
}
最后一个方法showAnnotation是一个被调用的方法,它显示了一个注释。再一次,它不适用于我第一次调用的注释。不管我叫它多少次。但是如果我改变注释,那么它就会开始工作,即使是我首先调用的注释(希望这是有意义的)。
此外,这甚至是第一次有效:[mapView setSelectedAnnotations:[NSArray arrayWithObject:[annotations objectAtIndex:i]]];
答案 0 :(得分:2)
你不应该自己称呼这种方法。
根据MKAnnotationView
文档:
您不应该直接调用此方法。一个MKMapView对象调用 此方法用于响应用户与注释的交互。
而是尝试使用Dipen建议的方法(setSelectedAnnotations
)。
答案 1 :(得分:1)
使用此功能可能对您有所帮助
[mapView1 setSelectedAnnotations:[NSArray arrayWithObjects:addAnnotation,nil]];