【问题标题】:How do I make a different left accessory image for each annotation appear?如何为每个注释显示不同的左侧附件图像?
【发布时间】:2012-09-11 20:35:57
【问题描述】:

我被困在这里,我想问是否有人可以帮助我解决这个问题,因为我正准备撕掉我的头发。

我正在使用下面的以下教程/指南,并且已经到了最后,它对一张图片很有用,但我想要的是能够为每个单独的注释设置不同的图片/缩略图

Tutorial/Guide

我一直在努力让它工作一段时间,而且我已经看够了。哈哈

我对 xcode 还很陌生,所以这就是我在努力解决它的原因。


来自 OP 的“对答案的建议编辑”:

编辑:

我似乎无法理解你所说的工作,我被它难住了。

如果您可以查看,我已在下面的 Dropbox 添加了我的项目副本。目前可能有点乱,因为我已经尝试了很多年,但无处可去。

https://www.dropbox.com/sh/6ddhege240konzo/XrpuFYF5y5

我很想弄清楚如何改为使用自定义标注。

我不确定的一件事是代表以及它们的实际工作方式。

【问题讨论】:

    标签: ios ios5 uiimageview mkmapview mkannotationview


    【解决方案1】:

    您想为每个注释将leftCalloutAccessoryView 设置为不同的图像。

    leftCalloutAccessoryViewMKAnnotationView 的一个属性,因此您需要在viewForAnnotation 委托方法中设置它(这是您创建并返回MKAnnotationView 的地方)。

    viewForAnnotation 委托方法获取对注释的引用,您需要在 annotation 参数中为其创建视图。

    因此,根据annotation 的某些属性,您可以相应地设置leftCalloutAccessoryView


    在最粗略的水平上,您可以根据annotation.title 设置leftCalloutAccessoryView
    例如:如果标题为“SFO”,则将图像设置为“苹果”,如果标题为“ATL”,则将图像设置为“桃子”等。


    但是,最好创建一个单独的属性(在实现MKAnnotation 的注释类中)清楚地指示要用于注释的图像。该属性可以是UIImage 本身、图像的名称、数字等——任何最适合您的情况。

    在创建注解时和调用addAnnotation之前,你设置注解的这个属性。

    然后在viewForAnnotation委托方法中,根据自定义注解属性设置leftCalloutAccessoryView

    例如,假设一个名为imageNameNSString 属性被添加到注解类中:

    MKAnnotationView *av = ... //or MKPinAnnotationView
    //typical dequeue and alloc/init code here
    
    if ([annotation isKindOfClass:[MyAnnotationClass class]])
    {
        //cast the annotation parameter to your custom class
        //so you can easily access the custom properties...
        MyAnnotationClass *myAnn = (MyAnnotationClass *)annotation;
    
        //create UIImage based on custom property of annotation...
        UIImage *img = [UIImage imageNamed:myAnn.imageName];
    
        //create UIImageView to use for the leftCalloutAccessoryView...
        UIImageView *iv = [[[UIImageView alloc] initWithImage:img] autorelease];
        //if using ARC, remove the autorelease above
    
        av.leftCalloutAccessoryView = iv;
    }
    
    return av;
    

    【讨论】:

    • 谢谢 Anna,明天早上试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多