当前位置:  开发笔记 > IOS > 正文

坐标设置时自定义MKAnnotation不移动

如何解决《坐标设置时自定义MKAnnotation不移动》经验,为你挑选了1个好方法。

我已经设置了自定义MKAnnotation

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

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

当我设置坐标时,它不会移动地图上的图钉.我添加了'didSet'和关键字坐标,因为我发现有人说会强制它更新.但没什么,它不动.我已经验证了lat/long已经改变并且是正确的,引脚只是没有移动.标题更新并显示更改.

我必须假设它,因为这是一个自定义注释.任何帮助?



1> Rob..:

如果你要手动公布这些变化的事件,你必须调用willChangeValue(forKey:)willSet,太.在Swift 4中:

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

或者在Swift 3中:

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

或者,更容易,只需将其指定为dynamic属性,此通知内容就是为您完成的.

@objc dynamic var coordinate: CLLocationCoordinate2D

对于Swift 2版本,请参阅此答案的先前版本.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有