私のマップには多くのannotationViewがあり、それぞれに独自の画像があり、annotationViewのデータはデータベース内のさまざまなテーブルから取得されます。un'annotationViewを選択すると、別のviewControllerを表示したいので、これを行うには、文字列であるテーブル名を渡す必要があります。どうすればいいですか?試しましたが、次のエラーが発生します:
No know instance method for selector 'setNameTable:'
これはMapViewController.mのコードです
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id
<MKAnnotation>)annotation
{
//....
if ([annotation isKindOfClass:[AnnotationCustom class]]){
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView *annotationView = (MKPinAnnotationView*) [mapView
dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:AnnotationIdentifier];
if ([self.name isEqualToString:@"MyTable"]){
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
annotationView.image = [UIImage imageNamed:@"iphone_myTable.png"];
[annotationView.annotation setNameTable:[NSString
stringWithFormat:self.name]]; //the error is here
//nameTable is a property of AnnotationCustom class
}else{
annotationView.image = [UIImage imageNamed:@"ipad_myTable.png"];
[annotationView.annotation setNameTable:[NSString
stringWithFormat:self.name]];//the error is here
//nameTable is a property of AnnotationCustom class
}
//.......
}
デリゲートメソッドでは、文字列を渡す必要があります
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control{
AnnotationCustom *customAnnotation = (AnnotationCustom *)view.annotation;
[customAnnotation setNameTable:[NSString stringWithFormat:@"%@",self.name]];
NSLog(@"The name table is %@",customAnnotation.nameTable);
/*the name is wrong, the string self.name is relative to last table open and not the
table selected */
}