如何将信息从 MapKit 注释发送到新的视图控制器

Posted

技术标签:

【中文标题】如何将信息从 MapKit 注释发送到新的视图控制器【英文标题】:How to send information from MapKit annotation to a new view controller 【发布时间】:2018-01-20 19:49:20 【问题描述】:

目前我正在从 API 中提取 JSON 并将其发布到 MapKit 地图。它从 API 中提取并将其解析为类市场数组,并且每个邮政编码的大小都不同。目前我正在尝试获取我单击的特定注释标注的信息,并将其发送到单击信息按钮时的新视图控制器。

这是我为 segue 做准备的代码,以及按下信息按钮时的代码:

    //This method gets ran when the information button is pressed on the Annotation's Callout

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView,
             calloutAccessoryControlTapped control: UIControl) 
    let market = view.annotation as! Market

    performSegue(withIdentifier: "callout", sender: market)



override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    let destination = segue.destination as! CalloutViewController

    destination.market = //Yes this line isn't completed, Not sure how to get the current class from the annotation's callout when it is pressed!

    let backItem = UIBarButtonItem()
    backItem.title = "Back"
    navigationItem.backBarButtonItem = backItem

这是标注视图控制器(我正在尝试获取信息以继续查看。):

class CalloutViewController: UIViewController 

let market: Market! = nil

@IBOutlet weak var testView: UITextView!

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    self.navigationController?.navigationBar.tintColor = UIColor.white

【问题讨论】:

为什么不用谷歌地图? 目前不熟悉任何地图框架。使用 MapKit,因为它很容易实现!我查看了 MapBox 和 Google 地图!也许下一个项目:D 好的,那很好 【参考方案1】:

应该只是:

destination.market = sender as? Market

还是我错过了什么?

【讨论】:

是的!这行得通。总的来说,我对 swift 和一切都还很陌生,很抱歉这是一个如此简单的任务!我没有意识到使用发件人,当我调用 perform segue 时,我正在从上面传入方法!谢谢, @SeanLohman 不用担心,很高兴我能提供帮助。玩得开心地图等,这些通常是更有趣的应用程序。

以上是关于如何将信息从 MapKit 注释发送到新的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何点击 UITableViewCell 中的 UIButton 并转换到新的视图控制器,并传递信息?

如何从集合视图单元导航到新的视图控制器?在斯威夫特

将MapKit注释连接到表视图

如何通过 segue 将图像传递到新的视图控制器?

根据 MapKit 注释标注在视图中加载数据单击

将uipopovercontroller的箭头放置在mapkit的注释点