Swift と MapKit を使用してアプリを構築しています。いくつかのカスタム ポイント注釈があります。デフォルトで、いつでもすべての注釈の上にタイトルを表示したいと思います。したがって、それらはすべて選択されます。したがって、この投稿からインスピレーションを得て、次を使用できます。
[mapView selectAnnotation:pinView animated:YES]
しかし、ピンをクリックして選択し、この注釈に基づいて新しい mapScope を取得できるようにする必要があります。どうすればできますか?
最初の解決策が不可能な場合は、各注釈に特定のラベルを使用します。しかし、注釈のタイトルを永久に非表示にする方法はありますか?
編集:
カスタム ポイント アノテーションのコードは次のとおりです。
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
println("viewForAnnotation")
if !(annotation is MKPointAnnotation) {
return nil
}
var seleccion:Bool
let cpa = annotation as! CustomPointAnnotation
let reuseId = cpa.nickName as String
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView.canShowCallout = true
// create and add UILabel only when actually creating MKAnnotationView
var nameLbl: UILabel! = UILabel(frame: CGRectMake(-24, 40, 100, 30))
nameLbl.tag = 42
nameLbl.textColor = UIColor.blackColor()
nameLbl.font = UIFont(name: "Atari Classic Extrasmooth", size: 10)
nameLbl.textAlignment = NSTextAlignment.Center
anView.addSubview(nameLbl)
}
else {
anView.annotation = annotation
}
anView.image = cpa.image
if cpa.toBeTriggered == true {
anView.selected = true
}
if let nameLbl = anView.viewWithTag(42) as? UILabel {
nameLbl.text = cpa.nickName
}
return anView
}