Je charge les données du serveur et les transmets à un tableau. Ces données incluent des coordonnées, du texte, des images, etc. Il contient également une variable, nommée "id" (j'ai pensé à trier un tableau pour un identifiant spécifique, mais je ne sais pas si c'est une bonne solution). Ces données sont utilisées pour afficher les marqueurs sur la carte. Ma tâche consiste à afficher les détails de ce marqueur sur une vue séparée. Comment dire à cet écran de détails quel marqueur a été choisi ou comment obtenir un élément spécifique du tableau en fonction du marqueur choisi?
C'est là que je crée des marqueurs:
for element in spots {
let image = UIImage(named: element.type)
let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude, longitude:
element.coordinates.longitude)
marker = GMSMarker(position: position)
marker.icon = image
marker.map = mapView
}
2 réponses
C'est une question assez générique, et il existe de nombreuses façons de transmettre des données entre des objets dans Swift / Cocoa, par ex. enchaînements, délégués, notifications, modèle singleton, ou tout simplement l'initialisation directe avec injection de dépendance ou sans:
let separateView = SeparateView()
separateView.marker = marker // Note that you need a var defined in your separate view in order to set it sooner, marker is your marker defined from before
navigationController?.pushViewController(separateView, animated: true)
Vous pouvez utiliser la méthode déléguée GMS pour vérifier quel marqueur est exploité.
for element in spots {
let image = UIImage(named: element.type)
let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude, longitude:
element.coordinates.longitude)
marker = GMSMarker(position: position)
marker.icon = image
marker.map = mapView
// add the element info to marker userData property
marker.userData = element
}
// function to check if which icon tapped
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
// get the element info from marker
let element = marker.userData
//code to navigate to detail view
}
J'espère que cela vous aidera!
De nouvelles questions
ios
iOS est le système d'exploitation mobile fonctionnant sur Apple iPhone, iPod touch et iPad. Utilisez cette balise [ios] pour les questions liées à la programmation sur la plate-forme iOS. Utilisez les balises associées [objective-c] et [swift] pour les problèmes spécifiques à ces langages de programmation.