我想在 swift 代码中访问第二个视图控制器中的 var

I want to access a var in a second view controller in swift code

你好,这是我到目前为止的代码

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

    @IBOutlet var map: MKMapView!
    var locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()
    }

    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
        var userLocation:CLLocation = locations[0] as! CLLocation
        var latitude = userLocation.coordinate.latitude
        var longitude = userLocation.coordinate.longitude
        var latDelta:CLLocationDegrees = 0.05
        var lonDelta:CLLocationDegrees = 0.05
        var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)
        var location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)   
        var region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)

        self.map.setRegion(region, animated: false)
        println(latitude)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

我想在显示 latitudelongitudecoursespeed 的第二个视图控制器中访问 locationManager 函数中的信息.我是新手,所以任何帮助都会很棒。干杯

  1. 将要传递给第二个 VC 的变量从本地移动到 class-scope:

    import UIKit
    import MapKit
    import CoreLocation
    
    class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
    
        @IBOutlet var map: MKMapView!
    
    
       var locationManager = CLLocationManager()
       var longitude:CLLocationDegrees!
       var latitude:CLLocationDegrees!
    
      override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()
    }
    
  2. 使用变量创建目标 UIViewController 以保存传递的值:

    import UIKit
    import MapKit
    import CoreLocation
    
    class MyDestinationViewController: UIViewController {
      var longitude:CLLocationDegrees!
      var latitude:CLLocationDegrees!
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    }
    
  3. prepareForSegue 方法添加到您要从中发送数据的 viewcontroller:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let destinationVC = segue.destinationViewController as! MyDestinationViewController
        destinationVC.latitude = latitude
        destinationVC.longitude = longitude
    }
    

如果您不想使用 segue,您可以在呈现 VC.

之前实例化 targetViewController 并传递变量