Быстрое прохождение данных в текстовом поле для просмотра карты

Я делаю приложение для поиска местоположения. Он содержит VC(viewcontroller) для отображения записи поиска.
Q1. Как получить ввод в текстовое поле и показать местоположение в просмотре карты?
Q2. Я не могу раскрутить viewcontroller. Я сделал код и провод в раскадровке. Но все равно ничего не делать.
Q3. Как передать данные в текстовом поле в VC A в представление таблицы в VC B при нажатии кнопки?

Или я делаю это неправильно?
Код:

@IBAction func unwind(segue: UIStoryboardSegue) {
    viewController?.dismiss(animated: true)

    self.performSegue(withIdentifier: "unwindToMap", sender: self)

}  

override func viewDidLoad() {
    super.viewDidLoad()

    //Check for Location Services
    if (CLLocationManager.locationServicesEnabled()) {
        myLocationManager = CLLocationManager()
        myLocationManager.delegate = mapViewDelegate as? CLLocationManagerDelegate
        myLocationManager.desiredAccuracy = kCLLocationAccuracyBest
        myLocationManager.requestAlwaysAuthorization()
        myLocationManager.requestWhenInUseAuthorization()
    }
    mapViewDelegate = searchBox.text as? MKMapViewDelegate
}

@IBAction func searchButtonClick(_ sender: Any) {


    let location = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
    let span = MKCoordinateSpanMake(0.005, 0.005)
    let region = MKCoordinateRegion(center: location, span: span)
    let annotation = MKPointAnnotation()


    annotation.coordinate = location
    annotation.title = searchBox.text!


    /*
    //find the words
    let _ : UITextPosition = searchBox.beginningOfDocument
    let _ : UITextPosition = searchBox.endOfDocument
    let _ : UITextRange = searchBox.selectedTextRange!

    // Get cursor position
    if let selectedRange = searchBox.selectedTextRange {
        _ = searchBox.offset(from: searchBox.beginningOfDocument, to: selectedRange.start)
    }
    searchBox.selectedTextRange = searchBox.textRange(
        from: searchBox.beginningOfDocument,                                         to: searchBox.endOfDocument)
    */

    // myMapView.add(location as! MKOverlay)
    myMapView.addAnnotation(annotation)
    myMapView.setRegion(region, animated: true)


}

Если ваш ответ будет полезен, я буду очень признателен.

2 ответа

Для передачи данных с одного экрана на другой вы можете использовать Structs

Подобно:

struct Manager
{
    static var tfText : String = ""
}

Чтобы обновить его содержимое из любого места, используйте

Manager.tfText = textField.text!

Получить данные То же, что и выше

let variable : String = Manager.tfText

Вы можете использовать навигационный контроллер для всплывающего контроллера, если вам нужно было использовать unwind, вы подключили исходный vc, чтобы развернуть переход в раскадровке

Для текущего местоположения вы можете использовать следующий код:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let userLocation:CLLocation = locations[0] as CLLocation

    let center = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

    mapView.setRegion(region, animated: true)

    // Drop a pin at user's Current Location
    let myAnnotation: MKPointAnnotation = MKPointAnnotation()
    myAnnotation.coordinate = CLLocationCoordinate2DMake(userLocation.coordinate.latitude, userLocation.coordinate.longitude);
    myAnnotation.title = "Current location"
    mapView.addAnnotation(myAnnotation)
}
Другие вопросы по тегам