Swift:Objective-C方法冲突(尝试更改calloutview时出错)

时间:2015-05-11 10:02:13

标签: ios objective-c swift

我正在尝试更改引脚的标注视图。我使用包含标签和图像的.xib,它应该在用户点击注释时出现。

我使用此代码:

func mapView(mapView: MKMapView!, didSelectAnnotationView annotation: MKAnnotationView!) -> UIView!
    {
        println("delegate")
        let pin = annotation as! CustomPointAnnotation

    if let infoView = UIView.viewFromNibName("AnnInfoView") as? AnnInfoView {
        infoView.nameLabel.text = pin.title

        if let photo = pin.imageName {
            infoView.placePhoto.image = UIImage(named: photo)
        } else {
            infoView.placePhoto.image = UIImage(named: "generic")
        }

        return infoView
    } else {
        return nil
    }
}

问题是我收到了这个错误:

  

Objective-C方法'mapView:didSelectAnnotationView:'由方法提供'mapView(:didSelectAnnotationView :)'与协议'MKMapViewDelegate'中的可选需求方法'mapView(:didSelectAnnotationView :)'冲突/ p>

并且无法找到解决方案。

我使用了这个Objective-C库:https://github.com/RVLVR/REVClusterMap 它集成了注释。

我在这个库的文件中找到了这个方法:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    if( [delegate respondsToSelector:@selector(mapView:didSelectAnnotationView:)] )
    {
        [delegate mapView:mapView didSelectAnnotationView:view];
    }
}

但即使我发表评论,错误仍然不会消失:(

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

MKMapViewDelegate的委托方法didSelectAnnotationView没有返回值。改变这一行

func mapView(mapView: MKMapView!, didSelectAnnotationView annotation: MKAnnotationView!) -> UIView!

func mapView(mapView: MKMapView!, didSelectAnnotationView annotation: MKAnnotationView!)