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了没有什么引号和添加的东西,似乎解决了这个问题。
- 在Core Data中将多对多关系迁移到连接表
- 在基于短信的应用程序itunesconnect中的演示帐户
- 在iOS设备上本地保存游戏得分…需要安全吗?
- iOS Swift – 某些设备上的EXC_BAD_INSTRUCTION
- 无论是否启用权利,Mac应用程序都会崩溃(由于权利而死亡)
- 如何在iOS中的驾驶模式下移除Google地图上的以前的自定义标记
- 添加Flurry Analytics后无法上传iOS更新? 错误:您的应用不能包含独立的可执行文件或库
- asm中的未知寄存器名称“q0”(arm64)
- NSURLConnection sendAsynchronousRequest无法从闭包中获取variables