2017-11-02 6 views
0

以前はカスタムマップコールアウトを使って作業していました。このエラーが発生し続けている理由を理解しようとしているので、これはあまりにも悪い状況です。「NSKVONotifying_MKPointAnnotation(0x1c0115960)型の値を 'ShopPeer.CustomBusinessPoint'(0x101159c68)にキャストできませんでした。 "customAnnotation = view.annotationを!CustomBusinessPointとしましょう"という行にこのエラーが表示されます。私はこのチュートリアルを例として使用しています:http://sweettutos.com/2016/03/16/how-to-completely-customise-your-map-annotations-callout-views/ ...また、以下の図のコンパイラで、表示されるビューの数を確認してください。Swiftカスタムマップコールアウトエラー

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フィールドをオーバーライドしていないとします。ビューがスーパークラスであることを確認するには、クラスを探す必要があります。ビューがカスタムかどうかをデバッグします。最後に、あなたが従っている記事の下のコメントを読んでください - あなたの特定の質問に支持者になる可能性のある人がさらにたくさんあります