2017-11-02 15 views
0

이전에 사용자 지정지도 설명 선을 사용하여 작업 해 보았습니다. "ShopPeer.CustomBusinessPoint '(0x101159c68)로'NSKVONotifying_MKPointAnnotation '(0x1c0115960) 형식의 값을 캐스팅 할 수 없습니다."라는 오류가 계속 발생하는 이유를 알아 내려고 노력했기 때문에 상황이 그렇게 좋지 않습니다. " "customAnnotation = view.annotation as customBusinessPoint"라는 줄에서이 오류가 발생합니다. 이 튜토리얼을 예제로 사용하고 있습니다 : http://sweettutos.com/2016/03/16/how-to-completely-customise-your-map-annotations-callout-views/ ... 아래 그림의 컴파일러에서 얼마나 많은 뷰가 표시되는지 확인하십시오. 왜 그렇게 많은지 알 수 없습니다.Swift Custom Map Call Out 오류

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
    guard !(annotation is MKUserLocation) else { return nil } 
    let reuseId = "pin" 
    if let pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? CustomBusinessCallOutAnnotatiion { 
     return pinView 
    } else { 
     let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
     pinView.pinTintColor = UIColor.red 
     pinView.canShowCallout = false 
     //pinView.rightCalloutAccessoryView = UIButton(type: UIButtonType.infoLight) 

     return pinView 
    } 
} 

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { 

    if view.annotation is MKUserLocation { return } 

    let customAnnotation = view.annotation as! CustomBusinessPoint 
    let views = Bundle.main.loadNibNamed("CustomBusinessCallOut", owner: nil, options: nil) 
    let calloutView = views?[0] as! CustomBusinessCallOut 


    calloutView.businessName.text = customAnnotation.businessName 


    calloutView.center = CGPoint(x: view.bounds.size.width/2, y: -calloutView.bounds.size.height * -0.0001) 
    view.addSubview(calloutView) 
    mapView.setCenter((view.annotation?.coordinate)!, animated: true) 
} 

enter image description here

답변

0

오류 유형 당신이 일치하지 않는 것이 분명하다. 예를 들어,보기가 사용자 정의가 아니거나 사용자 정의 클래스의 .annotation 필드를 대체하지 않습니다. 보기가 자신의 수퍼 클래스인지 확인하려면 클래스를 찾아야합니다. 보기가 사용자 정의인지 여부를 디버그합니다. 마지막으로, 다음 기사의 의견을 읽으십시오. - 특정 질문에 지지자가 될 사람들이 더 많습니다.