0

最初のビューには、ridesMap という名前の MKMapView があります。2 番目のビューは、UITableView を含む単なるビューです。2 番目のビューで保存ボタンをクリックすると、最初のビューからメソッドが呼び出されます。

// 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

の 2 番目のインスタンスを作成していますMyRidesMapViewController。元のインスタンスに注釈を追加する必要があります。そのインスタンスを 2 番目のビューに渡す何らかの手段を提供する必要があります。これには多くの方法があります。最適な選択は、アプリがどのように構成されているかによって異なります (これはわかりません)。

于 2010-05-25T07:04:53.857 に答える