gpt4 book ai didi

ios - MKPinAnnotationView Callout 按钮应该将自定义对象传递给 Details ViewController

转载 作者:行者123 更新时间:2023-11-28 20:38:47 24 4
gpt4 key购买 nike

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

我创建了一个包含这些注释的数组,并使用 addAnnotations:annotationArray 以正常方式将它们添加到 MKMapView 中.

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

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

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

我不确定在这里做什么,我似乎也找不到任何关于如何执行此操作的文档...

再次。我想将一个对象传递给详细 View Controller 。该对象将包含将在详细信息页面上使用的各种数据...

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

最佳答案

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

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

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

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

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

关于ios - MKPinAnnotationView Callout 按钮应该将自定义对象传递给 Details ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com