У меня есть массив широт и долгот вместе с другими материалами, и я хочу создать аннотации в виде карты. Я использую MapKit.Вызвать действие из аннотаций в виде карты
Когда пользователь нажимает выноску аннотации, я собираюсь представить другой контроллер. Я не могу найти индекс элемента массива, который использовался для создания этой конкретной аннотации.
Ниже приведен мой код.
У меня есть переменная Int
var annotationIndex = 0
Это где я добавить аннотации
func addAnnotation(latitude: Double, longitude: Double, title: String, subTitle: String?) {
if (latitude >= -90 && latitude <= 90) && (longitude >= -180 && longitude <= 180) {
let location = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
let span = MKCoordinateSpanMake(0.05, 0.05)
let region = MKCoordinateRegion(center: location, span: span)
mapView.setRegion(region, animated: true)
let annotation = MKPointAnnotation()
annotation.coordinate = location
annotation.title = title
annotation.subtitle = subTitle
mapView.addAnnotation(annotation)
}
}
Это метод MKMapViewDelegate настроить аннотацию
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
{
if !(annotation is MKPointAnnotation)
{
return nil
}
let reuseId = "test"
var aView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
aView.canShowCallout = true
let btn = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as! UIButton
btn.addTarget(self, action: "btnDisclosureAction:", forControlEvents: UIControlEvents.TouchUpInside)
btn.tag = annotationIndex
annotationIndex++
aView.rightCalloutAccessoryView = btn
return aView
}
Это кнопка rightCalloutAccessoryView действий
func btnDisclosureAction(sender: UIButton) {
println(sender.tag)
}
Прямо сейчас я просто печатаю тег кнопки с надстройкой выноски, который я пытаюсь установить с помощью переменной annotationIndex.
Поскольку annotationView повторно используется, я не могу получить точное значение индекса. Есть ли лучший способ сделать это?
Ниже приведен мой код. Но где ? –
извините, добавлено – Matt
Я могу помочь вам с Objective-C, если вы можете преобразовать его в быстрый. –