Хотите добавить аннотации в MapView при прокрутке UISlider из другого VIewController - PullRequest
0 голосов
/ 01 ноября 2019

MapVC and SLiderVC with bakchround color alpha = 0 У меня есть два ViewController: MapVC и SliderVC. На MapVC у меня есть 3D сенсорная кнопка, и при нажатии на нее, SliderVC представляет модально. Я хочу добавить аннотации в MapVC при прокрутке UISLider.

Я пытался добиться этого по протоколу. Я создал функцию протокола SliderVCDelegate и слабый делегат var моему SLiderVC. Когда я назначаю addTarget для UISLider, он ловит функцию и правильно печатает значение в моей целевой функции. Но проблема в том, что в моем MapVC я добавил заглушки протокола, но он не работает и может даже поймать мою печать.

Это мои SLiderVC и SliderVCDelegate.

import UIKit
import Panels
import TGPControls
import MapKit
import CoreLocation

protocol SliderVCDelegate: class {
    func addAnnotationsToMap(annotation: MKPointAnnotation?)
}

class SliderVC: UIViewController, CLLocationManagerDelegate {
    // MARK: Slider properties
    weak var delegate: SliderVCDelegate?
    var mapView: MapVC?

    @IBOutlet weak var camelLabel: TGPCamelLabels!
    @IBOutlet weak var discreteSlider: TGPDiscreteSlider!
    let locationManager = LocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()
//...
        discreteSlider.addTarget(self, action: #selector(valueChanged(_:event:)), for: .valueChanged)
// ...
    }

    func generateRandomCoordinates(min: UInt32, max: UInt32)-> CLLocationCoordinate2D {
        // ...
    }

    @objc func valueChanged(_ sender: TGPDiscreteSlider, event: UIEvent) {
        var num = 0
        let annotation = MKPointAnnotation()
        //First we declare While to repeat adding Annotation
        while num != 15 {
              num += 1

            //Add Annotation
            annotation.coordinate = generateRandomCoordinates(min: 70, max: 150) //this will be the maximum and minimum distance of the annotation from the current Location (Meters)
            annotation.title = "Title"
            annotation.subtitle = "SubTitle"
        }
        delegate?.addAnnotationsToMap(annotation: annotation)
        print(event) // prints correctly
        print(sender.value)
    }
}

И этомой MapVC, где я назначаю заглушки протокола, и он ничего не печатает.

@objc class MapVC: UIViewController, MapVCDelegate , UIGestureRecognizerDelegate, CLLocationManagerDelegate {
// ...
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "segue" {
            guard let sliderVC = storyboard?.instantiateViewController(withIdentifier: "SliderVC") as? SliderVC else { return
            }
            sliderVC.delegate = self
        }
    }
}
extension MapVC: SliderVCDelegate {
    func addAnnotationsToMap(annotation: MKPointAnnotation?) {
//        mapView.addAnnotation(annotation!)
        print("Anything") // Doesn't print, not reaches here.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...