Понимание функций контроллера представления переходит к аннотациям MapKit в Xcode и Swift

#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 не был подключен к моему исходному файлу из раскадровки. Еще раз спасибо