我已经找到并关注了之前关于此主题的一些问题,但仍无法使其发挥作用,我们将不胜感激。
我正在向地图添加注释,这些注释与存储在Parse后端的位置/商店相关联,并且希望能够唯一地标识这些位置,以便我可以将用户点击的位置存储为首选位置。我可以使用注释标题属性,但这可能不是唯一的。我的偏好是将从Parse检索到的位置对象添加到注释或至少是对象ID,以便我可以唯一地识别它。我创建了一个自定义注释,并将locationObject设置为Parse中的位置对象,并验证它是否存储为自定义注释的属性。问题是当我尝试在calloutAccessoryControlTapped中访问此属性时,注释似乎不再包含自定义属性。我的代码如下:
class NewCustomAnnotation: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var title: String
var subtitle: String
var locationObject: AnyObject!
init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String, locationObject: AnyObject) {
self.coordinate = coordinate
self.title = title
self.subtitle = subtitle
self.locationObject = locationObject
}
}
在viewDidLoad中:
var latitude = object["latitude"] as! CLLocationDegrees
var longitude = object["longitude"] as! CLLocationDegrees
var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
var annotation = NewCustomAnnotation(coordinate: location, title: "", subtitle: "", locationObject: object)
self.annotationCategory = "deliveryLocation"
annotation.coordinate = location
annotation.title = object["name"] as! String
annotation.subtitle = "Click to select this location"
annotation.locationObject = object
println("Annotation 1: \(annotation.description)")
println("Object ID: \(annotation.locationObject.objectId)")
self.map.addAnnotation(annotation)
在calloutAccessoryControlTapped中,我希望view.annotation.locationObject存在但不存在。
func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
println("Callout tapped")
preferredDeliveryLocation.text = "Selected store"
println(view.annotation.title)
}
其他所有内容都按预期工作,根据println()语句,我正在验证函数是否被调用。 annotation.title可用作标准属性但不是我的自定义annotation.locationObject属性?