自定义MKAnnotationView swift:func mapView什么都不做

时间:2015-01-02 10:33:38

标签: swift mapkit mkannotationview

我正在尝试使用MapKit在地图上设置图像而不是图钉。我知道我必须设置自定义MKAnnotationView。因此,我应该实现以下几行:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
    if !(annotation is CustomPointAnnotation) {
        return nil
    }

    let reuseId = "test"

    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
    if anView == nil {
        anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        anView.canShowCallout = true
    }
    else {
        anView.annotation = annotation
    }

    //Set annotation-specific properties **AFTER**
    //the view is dequeued or created...

    let cpa = annotation as CustomPointAnnotation
    anView.image = UIImage(named:cpa.imageName)

    return anView
}

但它根本不适用于我的代码。我复制/粘贴了这个post的所有代码,将一个名为1.png的图像添加到我的支持文件中。但是地图显示的是红色图钉而不是1.png图像。

看起来整个mapView函数都没用。我是否必须在viewDidLoad中调用它?我怎么能让它被使用?另外,reuseId是什么?我应该在哪里打电话?

感谢您的回答和新年快乐。

1 个答案:

答案 0 :(得分:2)

确保MKMapView的委托正确链接到实现该方法的ViewController。

你可以在“viewWillAppear”方法中这样做:mapView.delegate = self;

或者在InterfaceBuilder中: - 确保选择了MapKit视图 - 转到“Connections Inspector” - 在“Outlets”部分中,将“delegate”属性拖放到实现委托方法的ViewController