按详细信息披露后的注释细节?

时间:2012-03-26 16:33:52

标签: iphone objective-c ios cocoa-touch mkmapview

我有一个MKMapView注释对象,它有一个正确的标注附件详细信息披露按钮。当按下按钮时,我使用addTarget:action:forControlEvent来调用一个选择器方法,该方法创建一个详细的viewController并将其推送到视图堆栈。

我的问题是访问启动标注细节控制器的注释信息的最佳方法是什么。详细信息披露按钮设置为调用:

[button addTarget:self action:@selector(disclosurePressed:) forControlEvents:UIControlEventTouchUpInside];

看起来像这样:

- (void)disclosurePressed:(id)sender {
}

我想我可以查找发件人UIButton的父注释,任何人都可以给我任何关于如何做得最好的指示。

2 个答案:

答案 0 :(得分:4)

您可以更轻松地使用MKMapViewDelegate mapView:annotationView:calloutAccessoryControlTapped:方法,该方法可以直接告诉您点击了哪个注释视图。

答案 1 :(得分:3)

一种可靠的方法(如果必须使用自定义方法)是查看地图视图的selectedAnnotations属性。

虽然属性是NSArray,但由于地图视图一次只允许选择一个注释,因此用户刚刚点击的注释将位于索引0处,因此它将是:

id<MKAnnotation> annTapped = [mapView.selectedAnnotations objectAtIndex:0];

//Here, you can cast annTapped to a custom annotation class if needed.
//Be sure to check what kind of class it is first.

您可能还想首先检查mapView.selectedAnnotations.count是否为零,只是为了安全。


但是,使用addTarget和自定义操作方法的更好方法(如nevan king已经回答)是使用地图视图的calloutAccessoryControlTapped委托方法,其中可以通过{直接访问注释{1}}参数使用:

view