我已经设置了自定义MKAnnotation
class Location: NSObject,MKAnnotation { var id: Int var title: String? var name: String var coordinate: CLLocationCoordinate2D { didSet{ didChangeValueForKey("coordinate") } }
当我设置坐标时,它不会移动地图上的图钉.我添加了’didSet’和关键字坐标,因为我发现有人说会强制它更新.但没什么,它不动.我已经验证了lat / long已经改变并且是正确的,引脚只是没有移动.标题更新并显示更改.
如果您要手动发布这些更改事件,则还必须在willSet中调用
willChangeValue(forKey:)
.在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)) } }
或者,更容易,只需将其指定为动态属性,此通知内容就是为您完成的.
@objc dynamic var coordinate: CLLocationCoordinate2D
对于Swift 2版本,请参阅previous rendition of this answer.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。