iPhone:从另一个视图调用时,addAnnotation不起作用

时间:2010-05-25 05:20:55

标签: iphone mapkit mkmapview mkannotation

我有两个视图,第一个视图上有一个名为ridesMap的MKMapView。第二个视图只是一个带有UITableView的视图。单击第二个视图中的“保存”按钮时,它将从第一个视图调用方法:

// Get my first views class
MyRidesMapViewController *rideMapView = [[MyRidesMapViewController alloc] init];
// Call the method from my first views class that removes an annotation
[rideMapView addAnno:newRidePlacemark.coordinate withTitle:rideTitle.text withSubTitle:address];

这正确调用addAnno方法,如下所示:

- (void)addAnno:(CLLocationCoordinate2D)anno withTitle:(NSString *)annoTitle withSubTitle:(NSString *)subTitle {

    Annotation *ano = [[[Annotation alloc] init] autorelease];

    ano.coordinate = anno;

    ano.title = annoTitle;

    ano.subtitle = subTitle;

    if ([ano conformsToProtocol:@protocol(MKAnnotation)]) {

        NSLog(@"YES IT DOES!!!");

    }

    [ridesMap addAnnotation:ano];

}//end addAnno

此方法创建一个符合MKAnnotation的注释,并假设使用addAnnotation方法将该注释添加到地图中。但是,注释永远不会被添加。

当注释没有添加时,我永远不会得到任何错误。但是在调用该方法时它永远不会出现。

为什么会这样?似乎我已经正确地完成了所有事情,并且我正在将正确的MKAnnotation传递给addAnnotation方法。所以,我不明白为什么它永远不会掉针?可能是因为我从另一个视图调用这个方法吗?为什么会这么重要?

1 个答案:

答案 0 :(得分:2)

您正在创建MyRidesMapViewController的第二个实例。您应该将注释添加到原始实例。您需要提供一些方法将该实例传递给第二个视图。有很多可能的方法可以做到这一点;最佳选择取决于您的应用程序的结构(我们不知道)。