#swift #xcode #mapkit #mkmapview #mkannotation
#swift #xcode — код #mapkit #mkmapview #обозначение mkannotation
Вопрос:
У меня возникли проблемы с пониманием того, как запустить контроллер представления, когда кто-то нажимает на MKAnnotation с помощью MapKit. Я создал контроллер представления и segue, присвоил ему пользовательский идентификатор и добавил этот код:
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var MapViewUI: MKMapView!
private func mapView(_ mapView: MKMapView, didSelect view: MKAnnotation) {
self.performSegue(withIdentifier: "ShowClientController", sender: nil);
}
override func viewDidLoad() {
let aClient = Client(title: "Excavators", coordinate: CLLocationCoordinate2D(latitude: 0.0236, longitude: 37.9062), info:"A guy");
MapViewUI.addAnnotation(aClient)
super.viewDidLoad()
}}
И это класс Client, если вам интересно:
class Client: NSObject, MKAnnotation {
var title: String?;
var coordinate: CLLocationCoordinate2D;
var info: String;
init(title: String, coordinate: CLLocationCoordinate2D, info: String){
self.title = title;
self.coordinate = coordinate;
self.info = info;
}
}
Чего я не понимаю? Если кто-нибудь сможет пролить некоторый свет на это, я был бы очень благодарен. Спасибо вам всем.
Комментарии:
1. Удалить
private
. Сделайте контроллер представления делегатом представления карты.2. Привет, Мэтт, извините, что беспокою вас, но когда я добавляю
mapView.delegate = self;
в своюviewDidLoad()
функцию и удаляюprivate
, я получаю эту ошибку.Thread 1: "[<MyApp.ViewController 0x7fc994508550> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key MapViewUI."
И я уверен, что идентификатор контроллера представления указан правильно. Спасибо вам за уделенное время. Я ценю это.3. Понял! MapView не был подключен к моему исходному файлу из раскадровки. Еще раз спасибо