マップビューに次のコードが表示されたら、MapViewアノテーションを設定しています。これは、選択を除いてすべて正常に機能しているようです。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
MapAnnotation *pinpoint = [[MapAnnotation alloc] initWithTitle:@"Title" andCoordinate:loc];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1500, 1500);
[self.mapView setRegion:region animated:true];
[self.mapView addAnnotation:pinpoint];
[self.mapView selectAnnotation:pinpoint animated:true]; //nothing happens!?
}
ただし、このコールバックで同じメソッドを呼び出すと、正常に機能します。
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
MKAnnotationView *annotationView = [views objectAtIndex:0];
id <MKAnnotation> mp = [annotationView annotation];
[mv selectAnnotation:mp animated:YES];
}
これを引き起こしているのは何ですか?これは、selectAnnotationを呼び出すのに適切な場所ではありませんか?viewForAnnotationが呼び出されるまで待つ必要がありますか?