Печать информации о координатах для пользователя, Swift

Я работаю над приложением карты, пока у меня есть возможность сбрасывать булавки (булавки называются воспоминаниями). Я хочу отобразить информацию о координатах контактов для каждого выпавшего контакта в новой сцене, чтобы пользователь мог видеть обзор своих пропущенных контактов. Как бы я поступил так?

Я установил основной view-контроллер и добавил новую сцену, которая отображается модально. До сих пор у меня есть следующий код для управления местоположением и для удаления / хранения данных булавки:

@IBOutlet weak var addButton: UIBarButtonItem!
// Add button action
@IBAction func addButton(sender: AnyObject) {
    let annotation = MKPointAnnotation()
    annotation.coordinate = CLLocationCoordinate2D(latitude: self.placesMap.userLocation.coordinate.latitude, longitude: self.placesMap.userLocation.coordinate.longitude)
    self.placesMap.addAnnotation(annotation)
    self.locationManager.startUpdatingLocation()
}

// Location function
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location = locations.last
    let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.004, longitudeDelta: 0.004))
    self.placesMap?.setRegion(region, animated: true)
    self.locationManager.stopUpdatingLocation()
    let locationDictionary:[String:Double] = ["latitude":center.latitude,"longitude":center.longitude]
    var locationArray = [[String:Double]]()
    if NSUserDefaults.standardUserDefaults().objectForKey("locationArray") != nil {
        locationArray = NSUserDefaults.standardUserDefaults().objectForKey("locationArray") as! [[String:Double]]
    }
    locationArray.append(locationDictionary)
    NSUserDefaults.standardUserDefaults().setObject(locationArray, forKey: "locationArray")
    NSUserDefaults.standardUserDefaults().synchronize()
}

func locationManager(manager: CLLocationManager, didFailWithError error: NSError)
{
    print("Error code: " + error.localizedDescription)
}

1 ответ

Зависит от того, где будет выполняться переход, вы можете передать в locationArray performSegueWithIdentifier аргумент отправителя или сделать его свойством вашего просмотра контроллера. В любом случае, вы вводите массив выпавших булавок в новую сцену через prepareForSegue метод UIViewController.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    super.prepareForSegue(segue, sender: sender)
    guard let identifier = segue.identifier else { return }
    switch identifier {
    case "newScene":
        let controller = segue.destinationViewController as! NewSceneViewController
        controller.arrayOfDroppedPins = locationArray
        // or, controller.arrayOfDroppedPins = sender as! [[String:Double]]
        // if you pass in locationArray as the sender
    default:
        break
    }
}

Затем вы определяете свойство arrayOfDroppedPins в новом контроллере просмотра сцены.

Другие вопросы по тегам