0

我有一个符合MKAnnotation协议的注释类。该类有一个 init 方法,用于设置坐标、标题和副标题。

我创建了这些注释的数组,并通过使用addAnnotations:annotationArray.

然后在 MKMapViewDelegage 方法中,- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation我创建了一个 MKPinAnnotationView,它具有自定义的 pin 颜色、animatesDrop、canShowCallout。标注有一个 UIButton 类型UIButtonTypeDetailDisclosure

当我运行应用程序并单击地图上的图钉时,我会得到预期的结果,即带有标题、副标题和 detailDisclosure 按钮的标注。

我想弄清楚的是,[self.navigationController pushViewController:detailsController animated:YES];当用户单击详细信息披露按钮时,如何将数据传递到详细信息页面 ( )。我试图通过向 init 方法添加一个附加参数来修改我的注释类,但是我无法在- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control方法中访问该参数。看来我只能通过做这样的事情从那里访问标题和副标题[view.annotation title]

我不知道该怎么做,我似乎也找不到任何关于如何做到这一点的文档......

再次。我想将对象传递给详细视图控制器。该对象将包含将在详细信息页面上使用的各种数据...

PS - 我正在使用带有 ARC 的 Xcode 4.2。

4

1 回答 1

3

在 中calloutAccessoryControlTapped,注释引用是您创建和添加的确切注释对象,但引用的类型通常为id<MKAnnotation>.

要访问注释类中的自定义属性,您可以首先对其进行强制转换:

YourAnnotationClass *myAnn = (YourAnnotationClass *)view.annotation;

//now you can explicitly reference your custom properties...
NSLog(@"myAnn.customProp = %@", myAnn.customProp);

确保将“customProp”定义为注释类中的属性。

于 2012-02-25T23:23:04.660 回答