iOS:MapView注释未显示针脚

由于一些奇怪的原因,viewForAnnotation只适用于在viewDidLoad(这是一个testing引脚)中设置的引脚。 在别处加载的引脚在按下时不会被注释。 我已经设置了委托 我认为这与mapView调用中的标识符有关? 但我不确定如何解决这个问题。 任何帮助表示赞赏! 谢谢!

这是我的代码:

import Foundation import UIKit import MapKit import CoreLocation import Alamofire class MapViewController: UIViewController, MKMapViewDelegate { var locationManager:CLLocationManager = CLLocationManager() @IBOutlet weak var potholeMapView: MKMapView! var listData: Array<String> = [] var idData: Array<Int> = [] var descriptionData: Array<String> = [] var latitudeData:Array<Double> = [] var longitudeData:Array<Double> = [] override func viewDidLoad() { super.viewDidLoad() potholeMapView.delegate = self locationManager.requestWhenInUseAuthorization() potholeMapView!.region = sanDiegoCountyLocation() potholeMapView!.mapType = MKMapType.Standard potholeMapView!.showsUserLocation = true potholeMapView!.showsTraffic = true print(potholeMapView!.userLocationVisible) // WORKING HERE ACCESSORY VIEW SHOWS let encinitas = CLLocationCoordinate2DMake(32.955, -117.2459) let marker = AnnotatedLocation( coordinate: encinitas, title: "There", subtitle: "You are not here") potholeMapView!.addAnnotation(marker) } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) //HERE ACCESSORY VIEWS DONT SHOW loadPotholeData() } func sanDiegoCountyLocation()-> MKCoordinateRegion { let center = CLLocationCoordinate2DMake(32.76572795, -117.07319880 ) let widthMeters:CLLocationDistance = 100 let heightMeters:CLLocationDistance = 1000*120 return MKCoordinateRegionMakeWithDistance(center, widthMeters, heightMeters) } func loadPotholeData(){ let url = "http://bismarck.sdsu.edu/city/fromDate" let parametersGet = ["type" : "street", "user" : "008812"] Alamofire.request(.GET, url, parameters: parametersGet) .responseJSON { response in if let dataGet = response.result.value { let dataDict:NSArray = dataGet as! NSArray for item in dataDict{ let descrip = item["created"] self.listData.append(descrip!! as! String) let ids = item["id"] self.idData.append(ids! as! Int) let description = item["description"] self.descriptionData.append(description!! as! String) let latitude = item["latitude"] self.latitudeData.append(latitude as! Double) let longitude = item["longitude"] self.longitudeData.append(longitude as! Double) } } else { print("There was some error getting data") } } createAllPins() } func createAllPins(){ for (x, y) in zip(self.latitudeData, self.longitudeData) { let location = CLLocationCoordinate2DMake(x, y) let marker = AnnotatedLocation( coordinate: location, title: "", subtitle: "") potholeMapView!.addAnnotation(marker) } } func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { if let annotation = annotation as? AnnotatedLocation { let identifier = "pin" var view: MKPinAnnotationView if let dequeuedView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView { dequeuedView.annotation = annotation view = dequeuedView } else { view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier) //view = MKPinAnnotationView(annotation: <#T##MKAnnotation?#>, reuseIdentifier: <#T##String?#>) view.canShowCallout = true view.calloutOffset = CGPoint(x: -5, y: 5) view.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure) } return view } return nil } func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { self.performSegueWithIdentifier("pushAnnotation", sender: view) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let identifier = segue.identifier { switch identifier { case "pushAnnotation": let nextVC = segue.destinationViewController as! MapAnnotationDetailViewController //nextVC. default: break } } } } 

看来,这是因为你的标题和其他字幕是空白的。 我testing了没有什么引号和添加的东西,似乎解决了这个问题。