2015-09-19 24 views
0

这是按钮操作在我的视图控制器中的外观。如何在单击按钮时缩放到地图上的特定位置。我正在使用swift和MapKit

 func mapButtonClickedInScrollview(sender: UIButton) { 
     let myWorldViewController = MyWorldViewController(nibName: "MyWorldViewController", bundle: nil) 
     self.navigationController?.pushViewController(myWorldViewController, animated: true) 
    } 

这是我的地图的样子但是以另一种视图控制器(即MyWorldViewController)设置:

[enter link description here][1] 

所以,当我点击该按钮,我应该去到另一个控制器,它会自动放大到上图中显示的那个车针。 任何帮助,将不胜感激!

 [1]: http://i.stack.imgur.com/0Nddd.png 

回答

-1

将感兴趣点的坐标传递给新视图控制器,并在其地图视图中使用setRegion。代码可能是这样的:

var region = MKCoordinateRegion(center: myCoordinate, span: 200) 
region = mapView.regionThatFits(region) 
mapView.setRegion(region, animated: true) 
0

假设你有一个导航栏,首先创建从出发地到目的地的视图控制器推SEGUE,不要重复使用相同的VC,因为你会需要它背后更多的逻辑,然后给它一个标识符,可以说expandedAnnotation。然后您当前的VC创建一个“selectedAnnotation财产MyWorldViewController
您将需要使用MapKit的didSelectAnnotationView,找到你所选择的注释,(上一个项目,我必须在我的注解是艺术品例子(自定义的类名))

func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) { 
    if let annotation = view.annotation as? Artwork { 
     selectedAnnotation = annotation 
     performSegueWithIdentifier("expandedAnnotation", sender: self) 
    } 
} 

然后,在你重写prepareForSegue功能,通过标注到目的地的ViewController。当然首先要建立在目标视图控制器注释的属性。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "expandedAnnotation") { 
     let destinationVC = segue.destinationViewController as! DestinationViewController 
     destinationVC.annotation = selectedAnnotation 
    } 

而这就是它,在你destinationVC viewDidLoad,将注释添加到mapView并将其区域居中。祝你好运

+0

感谢您的回答,但我使用nib文件,而不是故事板,我总是有从一个视图控制器传递数据到另一个这个问题,这是我卡住的地方。 –

相关问题