我有一个包含多个词典的数组。在每本字典中我都有一些信息。我想在地图上为数组中的每个项添加一个点。除了didSelectForAnnotation方法我没有任何东西,如何将数组作为该对象的某些信息进入?在表中,我将使用indexPath,但注释没有indexPath。有解决方案吗?
答案 0 :(得分:1)
如果要与MKPointAnnotation
一起设置自定义信息,则需要对其进行子类化并创建一个自定义属性,您可以使用后者将其与其他数组对象区分开来。
class MyAnnotation: MKPointAnnotation {
var arrayIndex: Int!
}
现在您需要使用MyAnnotation
类创建注释,并使用您要创建注释的数组索引设置arrayIndex。
for (index,item) in yourArray.enumerated() {
let annotation = MyAnnotation()
//Set arrayIndex for your annotation
annotation.arrayIndex = 1
//Set coordinate and title from your array
annotation.coordinate = locations
annotation.title = "Zaid Homes"
annotation.subtitle = "Hay aljameaa"
map.addAnnotation(annotation)
}
现在,在mapView的didSelect view
方法中,您可以获得该索引。
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation as? MyAnnotation {
print(annotation.arrayIndex)
print(yourArray[annotation.arrayIndex])
}
}