我正在关注 Paul Hegarty 的 iOS 5 版本关于 ios 应用程序开发的讲座,我正在做作业 5。
所以基本上我需要使用 Flickr 提供的数据在 map 上显示一堆图像。
但是,当我尝试放置 UIImageView
时,我得到了引脚工作并显示标题和字幕。作为 leftCalloutAccessoryView
,它不工作。
所以我在 viewDidLoad
中将 map View Controller 设置为其 mapView 的代表。它符合 MKMapViewDelegate
协议(protocol)。
我实现了以下两种方法:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"MapVC"];
if (!aView) {
aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MapVC"];
aView.canShowCallout = YES;
aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
}
aView.annotation = annotation;
[(UIImageView *)aView.leftCalloutAccessoryView setImage:nil];
return aView;
}
和
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
UIImage *image = [self.delegate mapViewController:self imageForAnnotation:view.annotation];
[(UIImageView *)view.leftCalloutAccessoryView setImage:image];
}
但是,当我单击一个图钉时,它只显示标题和副标题。我不确定发生了什么,因为在这一步基本上我的所有代码都与视频中的示例相似,我不确定我缺少什么。
谢谢你的帮助!
- - - - - - - - - - - - - - - - -更新: - - - - - - - - ------------------
我发现了我的问题。
问题是我是
segue
进入 mapViewController,我在 prepareForSegue
中添加注释,然而,mapView
是 IBOutlet
用于 Controller ,尚未在 prepareForSegue
中设置,所以基本上我需要更新我的mapView
再次将注释传递给 viewDidLoad
中的 Controller ,这确实解决了问题。希望这将帮助任何有类似问题的人!
最佳答案
我自己解决了这个问题,见更新 有问题的部分。
关于ios - MapKit pin不显示leftCalloutAccessoryView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888500/