【问题标题】:MapKit pin not displaying leftCalloutAccessoryViewMapKit pin不显示leftCalloutAccessoryView
【发布时间】:2013-06-03 00:06:16
【问题描述】:

我正在关注 Paul Hegarty 关于 iOS 应用程序开发的 iOS 5 版本的讲座,我正在做作业 5。

所以基本上我需要使用 Flickr 提供的数据在地图上显示一堆图像。

我的图钉工作并显示标题和字幕,但是,当我尝试将 UIImageView 设置为 leftCalloutAccessoryView 时,它不起作用。

所以我在viewDidLoad 中将地图视图控制器设置为其mapView 的代理,它符合MKMapViewDelegate 协议。

我实现了以下两种方法:

- (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,它尚未在@中设置987654331@,所以基本上我需要用viewDidLoad中传递给控制器​​的注释再次更新我的mapView,这确实解决了问题。

希望这将帮助任何有类似问题的人!

【问题讨论】:

  • 尝试在didSelectAnnotationView中记录image变量,看看是否正确。
  • @verbumdei 它确实显示了图像的内存地址。所以我认为我得到的图像是正确的。

标签: ios objective-c mapkit mkannotationview


【解决方案1】:

我自己解决了问题,请参阅有问题的更新部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多