【发布时间】:2026-02-22 08:15:01
【问题描述】:
我有一个符合MKAnnotation 协议的注释类。该类有一个 init 方法,用于设置坐标、标题和副标题。
我创建了一个包含这些注释的数组,并使用addAnnotations:annotationArray 以正常方式将它们添加到 MKMapView。
然后在 MKMapViewDelegage 方法- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation 中创建一个 MKPinAnnotationView,并使用自定义 pin 颜色、animatesDrop、canShowCallout。标注有一个 UIButtonTypeDetailDisclosure 类型的 UIButton。
当我运行应用程序并单击地图上的一个图钉时,我会得到预期的结果,即带有标题、副标题和 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。
【问题讨论】:
标签: ios annotations mkmapview mkannotationview callouts