Аннотация не отображается

#swift #xcode #annotations #mkmapview #mkannotation

#swift #xcode #аннотации #mkmapview #mkannotation

Вопрос:

После перехода к контроллеру представления карты UITabBarItem должен выполнить действие, после чего аннотация должна быть добавлена на карту

класс MapViewController: UIViewController, UITabBarDelegate {

 @IBOutlet weak var middleMapButton: UITabBarItem!
@IBOutlet weak var mapView: MKMapView!

let locationManager = CLLocationManager()
let regionInMeters: Double = 10000

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.isNavigationBarHidden = true
    ecoMapButton.image = UIImage(systemName: "plus.circle")
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.isNavigationBarHidden = false
    middleMapButton.image = UIImage(systemName: "mappin.circle")
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    checkLocationServices()
    
}
  

Вот действие для этого элемента панели вкладок

 func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    let annotation = MKPointAnnotation()
    annotation.coordinate = CLLocationCoordinate2D(latitude: 41.881832, longitude: -87.623177)
    mapView.addAnnotation(annotation)
}
  

Вот некоторые действия по обеспечению конфиденциальности местоположения

 func setupLocationManager() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
}

func centerViewOnUserLocation() {
    if let location = locationManager.location?.coordinate {
        let region = MKCoordinateRegion.init(center: location, latitudinalMeters: regionInMeters, longitudinalMeters: regionInMeters)
        mapView.setRegion(region, animated: true)
    }
}

func checkLocationServices() {
    if CLLocationManager.locationServicesEnabled() {
        setupLocationManager()
        checkLocationAuthorization()
    } else {
        
    }
}
  

}

Комментарии:

1. Вы уверены, что аннотация находится в вашем setRegion ? Также не похоже, что вы устанавливаете делегат для TabBarController, поэтому ваш метод не вызывается

2. Существует UITabBarDelegate, но он не работает даже с этим классом MapViewController: UIViewController, UITabBarDelegate

3. Вы должны назначить это delegate , чтобы UITabViewController проверил шаблон делегирования. Это очень распространено в iOS

4. Я должен назначить его в viewDidLoad?

5. Мне понравилась эта middleMapButton. делегировать = self