Mi piacerebbe lavorare con un'annotazione dopo aver fatto clic. Ho consultato la documentazione di Apple e l'ho fatto su Google, ma non riesco a trovare il motivo per cui questo è diverso da come dovrebbe essere fatto. Fondamentalmente; Non capisco perché non un println("Pin clicked");
didSelectAnnotationView non chiamato
?
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
{
if !(annotation is MKPointAnnotation) {
return nil
}
let reuseId = "test"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView.canShowCallout = true
}
else {
anView.annotation = annotation
}
return anView
}
func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!)
{
println("Pin clicked");
}
func setAnnotationPinOnMap(annotation : NSManagedObject)
{
var subject: AnyObject? = annotation.valueForKey("subject")
var desc: AnyObject? = annotation.valueForKey("desc")
var langitude: AnyObject? = annotation.valueForKey("langitude")
var longitude: AnyObject? = annotation.valueForKey("longitude")
println(annotation);
let pin = MKPointAnnotation()
let location = CLLocationCoordinate2D(
latitude: longitude as CLLocationDegrees,
longitude: langitude as CLLocationDegrees
)
println(location.longitude, location.latitude)
pin.setCoordinate(location)
pin.title = subject as String!
pin.subtitle = desc as String!
println(pin.coordinate.longitude)
viewForAnnotation(pin);
mapView.addAnnotation(pin)
}
Ho importato il kit di mappe e incluso il delegato della visualizzazione mappa.
è 'delegate' del guarda la mappa set di proprietà? In caso contrario, il metodo delegato non verrà richiamato. Assicurati anche che il 'titolo' dell'annotazione (che è impostato su' subject') non sia vuoto o nullo. – Anna
Due cose non correlate: 1) Quando si imposta 'posizione', la latitudine è impostata su longitudine e la longitudine è impostata su langitudine che sembra all'indietro. 2) La funzione viewForAnnotation come scritta è inutile. Restituisce una vista ma il codice non fa nulla e ** non è denominato correttamente come metodo delegato della vista mappa **. Deve essere chiamato 'func mapView (mapView: MKMapView !, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!' E il 'delegate' della vista mappa deve essere impostato. Non dovresti chiamarlo direttamente. – Anna
Non ho impostato la mappa come delegato della vista. Ora l'ho impostato su: mapView.delegate = self. Ora, non vengono mostrati pin (in precedenza venivano mostrati i pin, ma non con l'evento click lanciato) – Kraishan