- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个用于我的 MKAnnotations 的自定义类,我想覆盖默认的 mapView:viewForAnnotatation
方法,以便我可以在标注中添加额外的信息。当我在代码中设置我的委托(delegate)时(按照下面的代码),注释被放置在 map 上并且可以选择,但我的 mapView:viewForAnnoation
从未被调用。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
NSLog(@"viewForAnnotation: called");
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapPin"];
if(!aView){
aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"mapPin"];
}
aView.annotation = annotation;
return aView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.mapView.delegate = self;
}
我知道委托(delegate)正在设置,因为我可以覆盖方法 -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
当我选择一个注释。
当我从在代码中设置委托(delegate)更改为在 Storyboard 中设置时,调用方法(NSLog(@"viewForAnnotation: called"); 语句出现)但注释没有出现在 map 上,有时会出现此错误出现:
<Error>: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedImageBlockData: bad readSession [0x8618480]
最佳答案
这似乎是两个不同的问题:
关于代码 v Storyboard中的设置委托(delegate),很难调和您的各种观察(委托(delegate)方法 didSelectAnnotationView
在两种情况下都被调用,但是 viewForAnnotation
是不是)。在 Storyboard的代码 v 中设置它之间的唯一区别是设置 delegate
的时间。您没有向我们展示添加注释的过程,因此很难根据您所描述的内容进行诊断。如果你的委托(delegate)方法都没有被调用,我会怀疑 mapView
IBOutlet
,但如果有些方法有效而其他方法无效,我只能怀疑是时间问题.
关于MKAnnotationView
的设置,默认实现什么都不做。您需要编写自己的 MKAnnotationView
子类,如果您使用自己的图像则设置其图像,或者更简单,只需使用 MKPinAnnotationView
。但是仅仅创建一个 MKAnnotationView
不会做任何事情。你真的想要:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
// If it's the user location, just return nil.
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
// Handle any custom annotations.
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapPin"];
if(aView){
aView.annotation = annotation;
} else {
aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"mapPin"];
}
aView.canShowCallout = NO;
return aView;
}
(请注意,我不仅要创建一个 MKPinAnnotationView
,而且还要确保它不是一个 MKUserLocation
,以防您选择向用户显示 map 上的位置。我还将显式设置 canShowCallout
,因为这可能是您编写此方法的根本原因。)
最重要的是,如果您想显示一个简单的引脚注释 View ,请使用 MKPinAnnotationView
。单独使用 MKAnnotationView
将不会显示任何注释。
关于iphone - map View :viewForAnnotation: not called when delegate set in code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862618/
我正在创建自定义注释,并且正在尝试使用 dequeueReusableAnnotation。 引脚之间的区别在于用于引脚图像的 png。 我创建了 myAnnotation 类,并在创建注释时使用了此
扫描了所有类似的问题并尝试了所有可能的解决方案后,我仍然找不到适合我的情况的解决方案。我尝试在我的 MapView 上放置多个图钉,但似乎无法正常添加我的图钉。我在 viewDidLoad 方法中启动
在我的 viewForAnnotation 方法中,我在图钉右侧添加了一个详细信息披露按钮,但它会将 showsUserLocation 更改为红色图钉,并且在“当前位置”文本右侧有一个披露按钮。 如
我正在 map 上显示图钉,但无法自定义注释 View 的显示。出于某种原因,我的 viewForAnnotation 没有被调用。这是 didFinishLaunchingWithOptions 方
我已经添加UIViewController在 .h 中并已添加 -(void) viewDidLoad { self.mapView.delegate = self; } 但是 view
我已经实现了 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation {方法来更改 us
我正在尝试制作自定义注释。我制作了一个自定义注释类,我在其中设计了注释 View 。我试图在我的 Viewcontroller 中调用 viewForAnnotation 中的类。当我运行该应用程序时
最近我在我的应用程序中实现了 viewForAnnotation 方法,以使用我的注释的特征(图像、颜色等)。唯一的问题是,虽然该功能在我的代码中,但定位服务的行为很奇怪。蓝色位置标记不是“脉动”并且
我的 viewForAnnotation 在 iOS8 中运行良好,但在 iOS9 中不显示自定义图钉图像。图片路径没问题。 怎么了 ?谢谢! func mapView(mapView: MKMapV
在我花了 2 天时间搜索错误后,我不得不在这里寻求帮助。我有 MapViewController 并在 map 上放置了一些图钉。我从苹果代码示例的 MapCallouts 和 WeatherMap
我添加了这个: func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
目标是根据存储在结构数组中的某些值自定义引脚颜色。 根据此处的一些帮助,我实现了以下 viewForAnnotation 委托(delegate)方法,并且根据我的结构数据数组的大小在循环中迭代调用此
我正在尝试制作一张 map ,在那里我可以看到我当前的位置,并看到这条街叫什么。 到目前为止,我可以在我的 map 上放置图钉,但出于某种原因,我没有收到标注。并且我在我的 viewForAnnota
我知道这个问题之前已经被其他人问过,并且我之前已经在这个论坛上阅读过它们,但是到目前为止我已经尝试了所有建议的方法,但没有运气,所以我决定发布这个问题。 我在下面有这段代码,用于更改 MKMapVie
我将一个完美运行的 6.1 应用程序升级到了 Xcode 5/ios 7使用 MKMapKit 在 map View 上显示一些图钉。 现在注释图钉不显示了。我确定我的 mapview 委托(dele
我想创建基本的个人资料图像注释而不是默认注释图钉,但我不知道在这种情况下如何使用 viewForAnnotation。 有没有办法创建类似 tableView 页眉页脚 View 的 xib 文件?或
当我没有在 MKMapView 上设置委托(delegate)而是添加注释时,它们的图像如下所示: 但是,如果我像这样返回一个 MKAnnotationView: func mapView(_ map
我正在尝试在 MKMapView 上显示自定义图钉。这些图钉将具有自定义图像以及将显示值的 UILabel。 我能够成功创建带有标签的自定义图钉。现在标签显示静态值。我从像解析这样的后端服务中查询数据
我有不同的类(MKAnnotation 子类)代表 map 注释。 我将它们加载到 map 上,一切正常,但是当我移动或缩放 map 图钉时,它们的图像开始丢失。 当我平移 map viewForAn
我看过其他关于此的报告,但似乎没有一个适用。我们的应用程序因频繁(但无法可靠地重现)崩溃而瘫痪,如下所示: Thread 0 name: Dispatch queue: com.apple.main
我是一名优秀的程序员,十分优秀!