2015-12-26 21 views
5

Mam zwyczaj MKAnnotation skonfigurowaćzwyczaj MKAnnotation nie ruszając przy współrzędnych ustawiony

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

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

kiedy ustawić współrzędnych nie przesuwa trzpień na mapie. Dodałem "didSet" z współrzędnymi słowa kluczowego, ponieważ znalazłem ludzi mówiących, że zmusiłoby to go do aktualizacji. ale nic, to się nie rusza. Sprawdziłem, że zmiany długości i długości uległy zmianie i są poprawne, pinezka po prostu się nie porusza. Aktualizuje tytuł i wyświetla zmianę.

Muszę to przyjąć, ponieważ jest to adnotacja niestandardowa. jakaś pomoc?

Odpowiedz

10

Jeśli zamierzasz ręcznie publikować te zmiany, musisz również zadzwonić pod numer willChangeValue(forKey:) w willSet. W Swift 4:

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

Albo w Swift 3:

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

Albo, znacznie łatwiej, wystarczy określić ją jako własność dynamic a to zgłoszenie rzeczy jest dla ciebie zrobić.

dynamic var coordinate: CLLocationCoordinate2D 

Wersja Swift 2, patrz previous rendition of this answer.