当我们在swift中使用MKMapView点击mapView时如何移动到第二个Viewcontroller?

Posted

技术标签:

【中文标题】当我们在swift中使用MKMapView点击mapView时如何移动到第二个Viewcontroller?【英文标题】:How to Move to 2nd Viewcontroller when we tap on mapView using MKMapView in swift? 【发布时间】:2020-05-25 11:08:09 【问题描述】:

在第一个 viewcontroller 我有 mapview 和下面的 textfields containerview.. 如果我点击 mapview 如何去第二个 viewcontroller?

如果我点击地图中的任何地方,我应该去第二个 VC:

FirstVC.. if i tap on map i have to go to 2ndVC

第二个VC设计:

2ndVC

对于我使用的两个视图控制器MKMapView

为此我已经从这个答案Tap gesture for MapKit编写了代码

override func viewWillAppear(_ animated: Bool) 

    let gestureRecognizer = UITapGestureRecognizer(target: self, action:"triggerTouchAction:")
     mapView.addGestureRecognizer(gestureRecognizer)


func triggerTouchAction(gestureReconizer: UITapGestureRecognizer) 
         //Add alert to show it works
       print("print working")
       let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;

      self.navigationController?.pushViewController(viewController, animated: true);
   

然后它会遇到以下错误

RegistrationViewController triggerTouchAction:]:无法识别的选择器发送到实例 0x7f999e81a400 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Project.RegistrationViewController1 triggerTouchAction:]:无法识别的选择器发送到实例 0x7f999e81a400”

如何设计上述屏幕,请帮助。

【问题讨论】:

***.com/questions/41075945/tap-gesture-for-mapkit @aiwiguna,我刚刚编辑了带有该答案的帖子.. 上面写着unrecognized selector sent to instance .. 请看一下我编辑的帖子以及您的建议答案.. 我错了 它是因为旧的选择器代码,在当前的 swift 中它会像这样pastebin.com/pya8vhZ9 @aiwiguna,非常感谢您的工作 @aiwiguna 你没有发布答案。如果你发布了答案,那么我可以接受 【参考方案1】:

像这样使用 UITapGestureRecognizer

override func viewWillAppear(_ animated: Bool) 

        let gestureRecognizer = UITapGestureRecognizer(target: self, action:#selector(triggerTouchAction(_:)))
         mapView.addGestureRecognizer(gestureRecognizer)


@objc func triggerTouchAction(gestureReconizer: UITapGestureRecognizer) 
         //Add alert to show it works
       print("print working")
       let viewController = self.storyboard?.instantiateViewController(withIdentifier: "NewZoomAddressViewController") as! NewZoomAddressViewController;

      self.navigationController?.pushViewController(viewController, animated: true);
   

【讨论】:

以上是关于当我们在swift中使用MKMapView点击mapView时如何移动到第二个Viewcontroller?的主要内容,如果未能解决你的问题,请参考以下文章

当用户滚动 MKMapView 时,从 Core Data 加载其他对象

SwiftUI 上的按钮点击调用 MKMapView.setRegion

MKPinAnnotationView 不在 MKMapView 中显示,即使它是使用 Swift 正确添加的

确定行进路径 mkmapview swift 上的距离

将平移手势传递给 MKMapView

Swift - 将 MKAnnotationView 添加到 MKMapView