2015-06-15 2 views
0

У меня есть MKMapView инициированного в viewDidLoad:MKMapView setregion быстры

override func viewDidLoad() { 
    super.viewDidLoad() 
     ..... 
     let mapView = MKMapView(frame: view.bounds) 
     mapView.autoresizingMask = .FlexibleHeight | .FlexibleWidth 
     mapView.delegate = self 
     view.addSubview(mapView) 
     view.sendSubviewToBack(mapView) 

и кнопка:

@IBAction func findMePressed(sender: AnyObject) { 
    ..... 
    mapView.setRegion(reg, animated: true) 
} 

Я понимаю, кнопка не работает, потому что MKMapView объявлен в viewDidLoad. Он отлично работает в другом представлении, где он связан с раскадрой. Но в этом представлении я должен инициализировать его так, потому что по какой-то причине пользовательские аннотации не будут работать со мной. Как я могу связать кнопку с инициализатором viewDidLoad

ответ

1

Вы указали свой mapView как локальную переменную, поэтому он находится только в области в методе viewDidLoad.

Сделайте MAPview переменная экземпляра ViewController:

class MapViewController: UIViewController, MKMapViewDelegate { 
    var mapView: MKMapView 

    override func viewDidLoad() { 
     super.viewDidLoad() 
      ..... 
     self.mapView = MKMapView(frame: view.bounds) 
     self.mapView.autoresizingMask = .FlexibleHeight | .FlexibleWidth 
     self.mapView.delegate = self 
     view.addSubview(self.mapView) 
     view.sendSubviewToBack(self.mapView) 
    } 

    ... 

    @IBAction func findMePressed(sender: AnyObject) { 
     ..... 
     self.mapView.setRegion(reg, animated: true) 
    } 

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