0

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

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

教程/指南

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

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


从OP的“建议编辑答案”:

编辑:

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

如果您可以查看,我已经在下面的 Dropbox 添加了我的项目副本。由于我已经尝试了很长时间并且无处可寻,因此目前可能有点混乱。

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

我很想弄清楚如何进行自定义标注。

我不确定的一件事是代表以及他们如何真正工作。

4

1 回答 1

1

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

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

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

因此,基于 的某些属性annotation,您可以进行leftCalloutAccessoryView相应的设置。


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


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

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

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

例如,假设在注解类中添加了一个NSString名为的属性:imageName

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;
于 2012-09-12T02:02:39.007 回答