0

我有两个视图,第一个视图上有一个名为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 方法。所以,我不明白为什么它从不掉针?可能是因为我从另一个视图调用此方法吗?这有什么关系?

4

1 回答 1

2

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

于 2010-05-25T07:04:53.857 回答