【发布时间】:2021-04-01 18:34:20
【问题描述】:
我正在使用 MapKit,我在地图上有一些注释。它们是markerAnnotationViews。问题是我希望在用户触摸注释时呈现视图控制器(无需通过标注附件视图)。
目前,我使用didSelectView with: MKAnnotationView 完成了此操作。但我的问题是,当我按下注解时,它会展开并显示以下视图控制器。
有没有办法让注释在用户按下时不展开?
谢谢。
编辑: 这就是我按下注释时呈现模态视图控制器的方式:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation as? FirstAnnotation {
let rootVC = DetailPinVC()
rootVC.title = "Detail Pin"
rootVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(dismissDetailVC))
let navVC = UINavigationController(rootViewController: rootVC)
present(navVC, animated: true)
} else if let annotation = view.annotation as? SecondAnnotation {
let rootVC = DetailPinVC()
rootVC.title = "Detail Pin"
rootVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(dismissDetailVC))
let navVC = UINavigationController(rootViewController: rootVC)
这是我的问题。当我关闭模式视图时,注释会在地图上保持展开状态。第一张照片是在我按下注释之前,第二张是之后。我希望“泡泡”保留为第一张照片:
【问题讨论】:
-
你能通过代码来说明你是如何呈现视图控制器的吗?
-
当然。我更新了问题
-
尝试在您的
didSelect方法中调用mapView.deselectAnnotation(<#T##annotation: MKAnnotation?##MKAnnotation?#>, animated: <#T##Bool#>)。在 if/else 语句之外,所以它总是被调用。 -
我以为我已经尝试过了,但我现在才尝试,它成功了,非常感谢:)
标签: swift annotations mapkit mkannotationview