Ich habe eine mapView mit Anmerkungen mit Detailangaben, die bei einem Klick auf einen neuen viewController verschoben werden. Wenn der Benutzer dann auswählt, um aus der Detailerklärung zu der Kartenansicht zurückzukehren, möchte ich, dass die Kartenansicht die gleiche Ansicht hat, die der Benutzer hatte, bevor auf die Detailoffenbarung geklickt wurde. Unten ist der Code, den ich bisher eingerichtet habe, aber wenn der Benutzer von der Detailanzeige zurückklickt, wird die Karte verkleinert. Ich bin mir nicht sicher, wie ich die vorherige Ansicht wiederherstellen soll.Swift 3.0 Map kehrt zum vorherigen MapView zurück
Details Disclosure VC:
// here by segueing, I want to communicate to the MapView VC that the map should remain the same
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "backButtonTapped")
{
let destinationVC = segue.destination as! TabBarVC
mapStatus = "wentBack"
print("The value of mapStatus after seguing is \(mapStatus)")
destinationVC.selectedIndex = 1
}
}
MapView VC:
override func viewDidAppear(_ animated: Bool) {
// here if the mapStatus is not the correct value (the user never used the detail disclosure), the map will just snap onto the current location
if mapStatus == "wentBack" {
print("Do not update location")
// assuming appropriate code is placed here but I am not sure what it is
} else {
print("Updated Current Location")
let center = CLLocationCoordinate2D(latitude: self.lastLocation.coordinate.latitude, longitude: self.lastLocation.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))
map.setRegion(region, animated: true)
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
if #available(iOS 8.0, *) {
locationManager.requestAlwaysAuthorization()
} else {
// Fallback on earlier versions
}
let noLocation = CLLocationCoordinate2D()
let viewRegion = MKCoordinateRegionMakeWithDistance(noLocation, 200, 200)
map.setRegion(viewRegion, animated: false)
}
}