我很难将选定注释的标题传递给受控制的视图控制器。我觉得这可能是一件简单的事情,我需要改变,但无法弄明白。
以下是准备segue的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "viewDetail"){
let theDestination : DetailViewController = segue.destinationViewController as! DetailViewController
theDestination.getName = view.annotation.title!
}
}
这里是用于点击注释调出时的代码,它执行segue
func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
self.performSegueWithIdentifier("viewDetail", sender: self)
}
问题是,在prepareForSegue函数中..它无法识别“view.annotation.title!”声明UIView没有成员“注释”。
我知道当我在其他函数中println(view.annotation.title!)时,它可以正常工作
感谢您的帮助
答案 0 :(得分:1)
您需要在地图视图委托方法的view
sender
参数中传递performSegueWithIdentifier
。
func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
self.performSegueWithIdentifier("viewDetail", sender: view)
}
之后,您可以在sender
的实施中的prepareForSegue
参数中阅读。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "viewDetail"){
let theDestination : DetailViewController = segue.destinationViewController as! DetailViewController
theDestination.getName = (sender as! MKAnnotationView).annotation!.title!
}
}
答案 1 :(得分:0)
感谢您的帮助,我用简单的方法解决了这个问题:
annotation = self.map.selectedAnnotations[0] as! MKAnnotation
这样它就会在视图中发送第一个选定注释的注释标题,这个标题只有一个...我调用的那个。