マップ MKAnnotation CalloutAccessoryView を設定して、レルム データベースからマッピングされた選択した画像を表示するにはどうすればよいですか (左右の calloutAccessory のように、両側にアイコンとボタンがありますか?)。ここで MapViewController の他の関数のクラス/メンバーを認識するためにも必要ですか? データと左右のコールアウト アクセサリのマッピングは正常に機能していますが、選択した画像を追加する方法がわからないため、コールアウトに大きなポスター スタイルの画像として表示されます (小さなアイコンとボタンを使用)。両側に)。
画像はSpecimenAnnotation.objectPoster
SpecimenAnnotation (データをマップするために正常に動作しています) と 'objectPoster' 値は、このように私のファイル Specimen.swift に含まれているクラス Specimen から選択された (およびマップされた) 注釈です。
class Specimen: Object{
dynamic var name = ""
dynamic var objectPoster = ""
dynamic var latitude = 0.0
dynamic var longitude = 0.0
dynamic var created = NSDate()
dynamic var category: Category!
}
私のMapViewControllerでは、「annotationView.detailCalloutAccessoryView = UIImageView(image: SpecimenAnnotation.objectPoster)」という行で、「インスタンスメンバー「objectPoster」はタイプ「標本注釈」では使用できませんという赤い警告エラーが表示されます
私は初心者です。ご提案をいただければ幸いです。何か案は?
このデータとエラーに関するコード ブロックは次のとおりです。
// Create annotations for each one
for specimen in specimens { // 3
let coord = CLLocationCoordinate2D(latitude: specimen.latitude, longitude: specimen.longitude);
let specimenAnnotation = SpecimenAnnotation(coordinate: coord, poster: specimen.objectPoster, subtitle: specimen.category.name, specimen: specimen)
mapView.addAnnotation(specimenAnnotation) // 4
}
}
}
//MARK: - MKMapview Delegate
extension MapViewController: MKMapViewDelegate {
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
guard let subtitle = annotation.subtitle! else { return nil }
if (annotation is SpecimenAnnotation) {
if let annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(subtitle) {
return annotationView
} else {
let currentAnnotation = annotation as! SpecimenAnnotation
let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: subtitle)
annotationView.image = UIImage(named:"IconStudent")
annotationView.enabled = true
annotationView.canShowCallout = true
// ERROR message here>
annotationView.detailCalloutAccessoryView = UIImageView(image: SpecimenAnnotation.objectPoster)
// right accessory view
let infoButton = UIButton(type: UIButtonType.InfoDark)
// Left accessory view
let image = UIImage(named: "button50")
let specimenButton = UIButton(type: .Custom)
specimenButton.frame = CGRectMake(0, 0, 30, 30)
specimenButton.setImage(image, forState: .Normal)
annotationView.rightCalloutAccessoryView = infoButton
annotationView.leftCalloutAccessoryView = specimenButton
if currentAnnotation.title == "Empty" {
annotationView.draggable = true
}
return annotationView
}
}
return nil
}