2015-12-26 8 views
5

の座標セットするとき、私は私はそれが地図上のピンを移動していない座標を設定するときMKAnnotationがカスタムMKAnnotationは

class Location: NSObject, MKAnnotation { 
    var id: Int 
    var title: String? 
    var name: String 

    var coordinate: CLLocationCoordinate2D { 
     didSet{ 
      didChangeValueForKey("coordinate") 
     } 
    } 

を設定するカスタムを持って動いていません。私は「didSet」にキーワードの座標を追加しました。私は人にそれを更新させると言っているのを見つけました。しかし、何も動かない。私は緯度/経度が変更されていることを確認して正しいですが、ピンは動いていません。タイトルは変更を更新して表示します。

これはカスタムアノテーションであるため、私はそれを仮定しなければなりません。どんな助け?

答えて

10

これらの変更イベントを手動で送信する場合は、willSetwillChangeValue(forKey:)と電話する必要があります。

var coordinate: CLLocationCoordinate2D { 
    willSet { 
     willChangeValue(forKey: #keyPath(coordinate)) 
    } 
    didSet { 
     didChangeValue(forKey: #keyPath(coordinate)) 
    } 
} 

それとも、はるかに簡単、ちょうどdynamicプロパティとして指定し、この通知のものがあなたのために行われます。

var coordinate: CLLocationCoordinate2D { 
    willSet { 
     willChangeValue(for: \.coordinate) 
    } 
    didSet { 
     didChangeValue(for: \.coordinate) 
    } 
} 

それともスウィフト3:スウィフト4で。

dynamic var coordinate: CLLocationCoordinate2D 

については、previous rendition of this answerを参照してください。

関連する問題