MKAnnotationView并将数据传递给另一个函数

时间:2010-12-22 13:33:50

标签: iphone cocoa-touch mkmapview mkannotation mkannotationview

实际上我正在我的应用程序中开发一些东西,在我的MKMapView中显示注释,这些注释应该是可点击的并将参数传递给方法。
现在的问题是如何在点击显示按钮时将参数传递给下一个功能 对于注释的格式,我使用- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation方法显示公开按钮。但问题是,如何从当前显示的Annotation对象中获取值?

Annotation的代码(仅限相关部分):

@synthesize coordinate, id, title, subtitle;

+ (id)annotationWithCoordinate:(CLLocationCoordinate2D)coordinate {
    return [[[[self class] alloc] initWithCoordinate:coordinate] autorelease];
}

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate {
    self = [super init];

    if(nil != self) {
        self.coordinate = coordinate;
    }

    return self;
}

当触摸公开按钮时,应调用方法- (void)displayInfo:(NSNumber *) anId;并将Annotation.id作为anId参数移交。

使用该代码生成公开按钮:

   UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    dropPin.rightCalloutAccessoryView = disclosureButton;
    dropPin.animatesDrop = YES;
    dropPin.canShowCallout = YES;

所以 - 问题:
如何将该参数传递给该函数或阅读所点击的id的{​​{1}}?

我以为我可以使用UIButton的选择器(但是 - 如何传递id?)或Annotation(再次 - 如何传递id?)来处理关于disclosureButton的点击。 / p>

我希望你知道我的意思,非常感谢你的答案! :)

1 个答案:

答案 0 :(得分:4)

在calloutAccessoryControlTapped中,注释可通过视图获得:

MKAnnotation *annotation = view.annotation;