在我的MapView中,我有几个MKAnnotation引脚,每个引脚都有viewFor配置为显示带有右侧“ I”按钮的小弹出窗口。
现在,我正在尝试通过点击弹出窗口中的“ I”按钮来创建序列的方法-我发现可以通过
完成func mapView(... calloutAccessoryControlTapped control: UIControl)
但是,因为在情节提要板上当然不会显示MKAnnotation引脚,所以我不知道如何使用Control-Drag方法创建Segue并获取相应的Segue ID。 < / p>
我的解决方法-我基本上实例化了我希望为其选择的另一个视图控制器,并在每次按下“ I”按钮时切换到该新视图。
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let settingVC = self.storyboard?.instantiateViewController(withIdentifier: "SetNotifPageID") as! SetNotificationViewController
self.present(settingVC, animated: true, completion: nil)
}
但是有更好的方法来执行此操作吗,例如从情节提要中执行,还是采用更正确的方法?
答案 0 :(得分:1)
要创建剧集,请在情节提要中,从一个视图控制器上的ViewController图标拖动到第二个视图控制器的视图区域。
然后从performSegue(identifier:sender)
呼叫mapView(_:annotationView:calloutAccessoryControlTapped:)
。
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
performSegue(withIdentifier: "yourSegueIdFromTheStoryboard", sender: nil)
}
从prepare(for:sender:)
配置目标视图控制器。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let viewController = segue.destination as? SetNotificationViewController {
// configure your view controller
}
}