2015-05-17 2 views
2

Привет вот мой код до сих порЯ хочу получить доступ к вар во втором контроллере представления в быстром коде

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() 
    } 
} 

Я хотел бы получить доступ к информации в функции locationManager во втором контроллере представления, показывающий latitude , longitude, course и speed. Я новичок, поэтому любая помощь будет отличной. веселит

ответ

0
  1. Переместите переменные, которые вы хотите, чтобы перейти ко второму VC от местного до класса-сферы:

    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 к вашему контроллеру просмотра, из которого вы хотите отправить данные:

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

Если вы не хотите использовать SEGUE, вы можете просто targetViewController в создании экземпляра и передать переменные, прежде чем представить ВК.

+0

Большое спасибо, что отсортировал его для меня и спасибо за быстрый ответ. –

Смежные вопросы