iOS MapKit didAddAnnotationViews方法未调用

时间:2011-03-16 06:07:43

标签: ios annotations mapkit android-mapview

我正在尝试在解析数据后从单独的类加载注释。数据正确解析,我通过NSLog进行了解析。我将数据发送到负责加载MKMapView的类。该类接收正确的数据。

以下是解析我的数据的类的代码(ParseData.m):

AnnotationsTest *loadFriend = [[AnnotationsTest alloc] init];
    [loadFriend loadOutAnnotations:friendFound];
    [loadFriend loadOutAnnotationsAgain];
    [loadFriend release];

在我的第二个类(MapViewController.m)中调用的方法:

-(void)loadOutAnnotations:(NSMutableArray *)friendData

使用以下代码:

    CLLocationCoordinate2D workingCoordinate;

workingCoordinate.latitude = [[friendData objectAtIndex:5] floatValue];
workingCoordinate.longitude = [[friendData objectAtIndex:4] floatValue];
MapAnnotation *appleStore1 = [[MapAnnotation alloc] initWithCoordinate:workingCoordinate];
[appleStore1 setTitle:@"Title"];
[appleStore1 setSubtitle:@"subtitle"];
[appleStore1 setUserData:[friendData objectAtIndex:6]];
[appleStore1 setAnnotationType:iCodeBlogAnnotationTypeApple];

[self.mapView addAnnotation:appleStore1];

最后,这是我的代码来响应addAnotation事件(MapViewController.m):

- (void)mapView:(MKMapView *)mapViews didAddAnnotationViews:(NSArray *)views {
id myAnnotation = [mapViews.annotations objectAtIndex:0];
[mapViews selectAnnotation:myAnnotation animated:YES];
NSLog(@"didAddAnnotationViews is called");}

如果我对变量进行硬编码,那么注释将完全加载,不通过该方法传递NSMutableArray,并调用MapViewController类viewDidLoad部分中的方法。当我尝试调用该方法从另一个类添加注释时,didAddAnnotationViews方法不响应。

请指教。在此先感谢!!

埃文

1 个答案:

答案 0 :(得分:3)

所以我查看了你的代码,这是预期的行为:地图注释只是注释的抽象表示。您必须“手动”将其添加到地图中。地图THEN要求代表使用它来显示注释的VIEW。因此,当您不将它添加到地图时,它就不会出现了:)