不同引脚注释的不同信息
Posted
技术标签:
【中文标题】不同引脚注释的不同信息【英文标题】:Different info for different pin annotations 【发布时间】:2016-07-28 21:03:20 【问题描述】:我的地图视图上有两个不同的图钉。我每个都有一个信息按钮。信息按钮将连接到具有图像视图(保存该地点的图片)和一个文本标签(保存有关该地点的信息)的 UIViewController。
我的问题是如何根据选择的引脚注释按钮生成信息和图片。最后一个函数是用来连接到信息视图控制器的。
class GetToTheStart: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate
//map view outlet
@IBOutlet weak var mapView: MKMapView!
//defining use of location manager
let myLocMgr = CLLocationManager()
override func viewDidLoad()
super.viewDidLoad()
//setting up location request
myLocMgr.desiredAccuracy = kCLLocationAccuracyBest
myLocMgr.requestWhenInUseAuthorization()
myLocMgr.startUpdatingLocation()
myLocMgr.delegate = self
mapView.delegate = self
// coordinates of desired locations for pins
var zoo1 = CLLocationCoordinate2DMake(53.347439, -6.291820)
var town1 = CLLocationCoordinate2DMake(53.347247, -6.290865)
//setting up pin 1 annotation (the zoo)
var zoopin = MKPointAnnotation()
zoopin.coordinate = zoo1
zoopin.title = "Dublin Zoo"
zoopin.subtitle = "This this the zoo"
mapView.addAnnotation(zoopin)
//setting up pin 2 annotation (the town)
var townpin = MKPointAnnotation()
townpin.coordinate = zoo1
townpin.title = "Dublin town"
townpin.subtitle = "This this the town"
mapView.addAnnotation(townpin)
//setting up Pin callout button for segue
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
if annotation is MKUserLocation
let reuseIdentifier = "pin"
var pin = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseIdentifier) as? MKPinAnnotationView
if pin == nil
pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseIdentifier)
pin!.pinColor = .Red
pin!.canShowCallout = true
pin!.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure)
else
pin!.annotation = annotation
return pin
//performing segue from info button to infoViewController
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
performSegueWithIdentifier("info", sender: view)
【问题讨论】:
在给代码的时候,要格式化好,否则很难通过它... 当您单击图钉时,您需要知道单击了标题为“都柏林动物园”或“都柏林镇”的图钉的哪个图钉注释?这是你的问题吗? 在那里重新格式化并添加了一些 cmets,因此应该更容易理解。是的,问题是我无法弄清楚如何仅将有关单击的图钉(即动物园图钉或城镇图钉)的信息发送到 infoViewController。 【参考方案1】:为此,您需要覆盖以下方法。在这里,我们将获得将触发 segue 的 annotationView。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
if (segue.identifier == "info")
if let annotation = sender as? MKAnnotationView
let detailViewController = segue.destinationViewController as! DetailViewController
detailViewController.titleText = annotation.annotation?.title ?? ""
detailViewController.detaileText = annotation.annotation?.subtitle ?? ""
在 detailViewController 中与您的 infoViewController 相同,这里我有两个标签,为此我有两个公共变量。这只是为了避免错误,因为此时我们没有标签对象。
这是我的 DetailViewController 的代码。
import UIKit
class DetailViewController: UIViewController
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var detailLabel: UILabel!
var titleText: String? didSet updateUI()
var detaileText: String? didSet updateUI()
override func viewDidLoad()
super.viewDidLoad()
updateUI()
private func updateUI()
self.titleLabel?.text = self.titleText
self.detailLabel?.text = self.detaileText
【讨论】:
感谢这对区分各种引脚非常有帮助。但是这种方式只会发送标题和副标题。有没有办法将一段信息与每个引脚链接并显示?我正在考虑将字幕设置为信息段落,然后将其隐藏在注释中,您会怎么想?是否可以使用这种方法将图像与每个引脚链接? 你能说得更具体点吗.. 我没听懂 酷。好的,所以您发布的代码可以将所选引脚的标题和副标题发送到 infoViewController。这很有帮助。但是,我想向 infoViewController 发送有关所选引脚的段落,而不仅仅是引脚的标题和副标题。我还希望有一张与每个引脚相关联的图片,并能够将其发送到 infoViewController 以及段落。 很酷,因为它不是 annotation.annotation?.title 怎么能做到?或 annotation.annotation?.subtitle ??.以上是关于不同引脚注释的不同信息的主要内容,如果未能解决你的问题,请参考以下文章