任何人都可以帮助我如何使用
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
方法。
我试图告诉我的项目 appart 上的注释引脚,但我不知道如何。每个大头针都有一个披露按钮,但我不知道程序如何知道正在按下哪个大头针按钮。
任何人都可以帮助我如何使用
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
方法。
我试图告诉我的项目 appart 上的注释引脚,但我不知道如何。每个大头针都有一个披露按钮,但我不知道程序如何知道正在按下哪个大头针按钮。
您可以在这里使用多种不同的技术。
例如,您可以为每个 annotationView 保留一个 ivar 并执行以下操作:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
if (view == myFirstAnnotationView) {
//do something
}
if (view == mySecondAnnotationView) {
//do something
}
if (view == myThirdAnnotationView) {
//do something
}
}
或者,您可以使用注释视图的标记值。
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
if ([view.tag isEqualToString@"one"]) {
}
if ([view.tag isEqualToString@"two"]) {
}
}
或者,您可以继承 MKAnnotationView 以向其添加一些行为。
- (void)mapView:(MKMapView *)mapView annotationView:(MyMKAnnotationViewSubclass *)view calloutAccessoryControlTapped:(UIControl *)control {
[view doAMethodIMadeWhenISubclassed];
}
没有,这些都是一个完整的解决方案,如果不更好地理解您的应用程序和设计,很难提供一个,但它们的共同点是在将 annotationView 添加到地图之前更改它以决定做什么在委托回调发生之后。我希望这会引导您走上正确的道路。