Swift情节提要-使用calloutaccessory控制的显示按钮在MapView中创建序列

时间:2018-06-28 21:41:14

标签: ios swift mapkit segue xcode-storyboard

在我的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)

}

但是有更好的方法来执行此操作吗,例如从情节提要中执行,还是采用更正确的方法?

1 个答案:

答案 0 :(得分:1)

要创建剧集,请在情节提要中,从一个视图控制器上的ViewController图标拖动到第二个视图控制器的视图区域。

enter image description here

然后从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
        }
    }