Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MKPinAnnotationView详图索引按钮应将自定义对象传递给详细信息ViewController_Ios_Annotations_Mkmapview_Mkannotationview_Callouts - Fatal编程技术网

Ios MKPinAnnotationView详图索引按钮应将自定义对象传递给详细信息ViewController

Ios MKPinAnnotationView详图索引按钮应将自定义对象传递给详细信息ViewController,ios,annotations,mkmapview,mkannotationview,callouts,Ios,Annotations,Mkmapview,Mkannotationview,Callouts,我有一个符合MKAnnotation协议的注释类。该类有一个init方法,用于设置坐标、标题和副标题 我通过使用addAnnotations:annotationArray以常规方式创建这些注释的数组并将它们添加到MKMapView中 然后在MKMapViewDelegage方法-(MKAnnotationView*)mapView:(MKMapView*)注释的mapView视图:(id)注释中,我创建了一个带有自定义管脚颜色、AnimateDrop、canShowCallout的MKPinA

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

我通过使用
addAnnotations:annotationArray
以常规方式创建这些注释的数组并将它们添加到MKMapView中

然后在MKMapViewDelegage方法
-(MKAnnotationView*)mapView:(MKMapView*)注释的mapView视图:(id)注释
中,我创建了一个带有自定义管脚颜色、AnimateDrop、canShowCallout的MKPinAnnotationView。详图索引有一个类型为
uiButtonTyped
的UIButton

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

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

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

再说一遍。我要将对象传递给局部视图控制器。该对象将包含在详细信息页面上使用的各种数据


PS-我使用的是Xcode 4.2 w/ARC。

Callout AccessoryControlTapped
中,注释引用是您创建和添加的精确注释对象,但引用的类型一般为
id

要访问注释类中的自定义特性,可以首先强制转换它:

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

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

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

Callout AccessoryControlTapped
中,批注引用是您创建和添加的确切批注对象,但引用的类型一般为
id

要访问注释类中的自定义特性,可以首先强制转换它:

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

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

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

是-但一定要先检查
myAnn
的类类型。如果用户点击“Current Location”(当前位置)注释,您也将收到此消息-如果您假设它是您的类之一,它将以一个未实现的方法异常中断。谢谢Anna,这非常有效!还感谢你史蒂夫指出了当前的位置问题。如果([myMapAnnotation isKindOfClass:[myMapAnnotation class]])是的,我已经实现了一些额外的代码来防止这个错误,但是一定要先检查
myAnn的类类型。如果用户点击“Current Location”(当前位置)注释,您也将收到此消息-如果您假设它是您的类之一,它将以一个未实现的方法异常中断。谢谢Anna,这非常有效!还感谢你史蒂夫指出了当前的位置问题。如果([myMapAnnotation isKindOfClass:[myMapAnnotation class]]),我已经实现了一些额外的代码来防止此错误