如何将信息从 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 注释发送到新的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章