2015-12-26 21 views
5

Tôi đã có một tùy chỉnh MKAnnotation lậptùy chỉnh MKAnnotation không di chuyển khi tọa độ thiết

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

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

khi tôi đặt tọa độ nó không di chuyển pin trên bản đồ. Tôi đã thêm 'didSet' với từ khóa phối hợp như tôi thấy mọi người nói rằng sẽ buộc nó cập nhật. nhưng không có gì, nó không di chuyển. tôi đã xác minh lat/long đã thay đổi và chính xác, pin chỉ không di chuyển. Cập nhật tiêu đề và hiển thị thay đổi.

tôi phải giả định vì đây là chú thích tùy chỉnh. bất kỳ giúp đỡ?

Trả lời

10

Nếu bạn sắp đăng các sự kiện thay đổi đó theo cách thủ công, bạn cũng phải gọi số willChangeValue(forKey:) trong số willSet. Trong Swift 4:

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

Hoặc trong Swift 3:

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

Hoặc, dễ dàng hơn nhiều, chỉ cần xác định nó như một tài sản dynamic và các công cụ thông báo này được thực hiện cho bạn.

dynamic var coordinate: CLLocationCoordinate2D 

Đối với phiên bản Swift 2, xem previous rendition of this answer.

Các vấn đề liên quan