首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKPinAnnotationView与MKAnnotationView

MKPinAnnotationView与MKAnnotationView
EN

Stack Overflow用户
提问于 2012-05-08 21:07:19
回答 2查看 4K关注 0票数 3

我继承了一个抛出此警告的项目

代码语言:javascript
复制
Incompatible pointer types assigning to 'MKPinAnnotationView *' from 'MKAnnotationView *'

在这条线上

代码语言:javascript
复制
pinView=[[[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID]autorelease];
    }

我想在没有警告的情况下退还这个项目,所以我希望这里的人能迅速得到答复

完整代码:

代码语言:javascript
复制
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation: (id  <MKAnnotation>)annotation {
    MKPinAnnotationView *pinView = nil; 

    NSUserDefaults *prefs=[NSUserDefaults standardUserDefaults];

    if(annotation != mapView.userLocation) 

    {

        static NSString *defaultPinID = @"com.invasivecode.pin";

        pinView = (MKPinAnnotationView *)[mapView  dequeueReusableAnnotationViewWithIdentifier:defaultPinID];


        if (!pinView) {
            pinView=[[[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID]autorelease];
        }

    }   
    pinView.animatesDrop=YES;
    [mapView.userLocation setTitle:@"I am here"];
    [mapView.userLocation setSubtitle:[prefs objectForKey:@"CurrentLocationName"]];
    return pinView;        
}

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-08 21:23:42

pinView变量被声明为MKPinAnnotationView,但该行创建了一个MKAnnotationView

更改此行:

代码语言:javascript
复制
pinView=[[[MKAnnotationView alloc]initWithAnnotation...

至:

代码语言:javascript
复制
pinView=[[[MKPinAnnotationView alloc]initWithAnnotation...

您还应该拥有该ifelse部件,以处理批注视图的重用:

代码语言:javascript
复制
else
    pinView.annotation = annotation;
票数 3
EN

Stack Overflow用户

发布于 2012-05-08 21:21:14

您正在使用pin注释视图,同时您正在将注释视图分配为pinview,这在技术上是错误的!我猜这就是它发出警告的原因。试试这个可能会解决你的问题。

代码语言:javascript
复制
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation: (id  <MKAnnotation>)annotation {


pinView = (MKPinAnnotationView *)[mapView  dequeueReusableAnnotationViewWithIdentifier:defaultPinID];


if (!pinView) {
        pinView=[[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID]autorelease];
    }

..........
..........

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10499226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档