Swift:MapKit - 识别 Pin Tap
Swift: MapKit - Recognize Pin Tap
我一定是遗漏了一些明显的东西......
作品:
从 Core Data 添加一堆 MKPointAnnotations...显示在地图上
无效:
尝试在点击 pin 时显示打印语句。
我设置了 MKMapView Delegate,但没有实现 AnnotationView,因为我希望在点击 pin 后立即继续。宁愿不显示上下文对话框。
我错过了什么来识别引脚被窃听?
import UIKit
import MapKit
import Foundation
import CoreData
class MapViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapOutlet: MKMapView!
var latitude = 100.0 as Double
var longitude = 120.0 as Double
var pins = [NSManagedObject]()
func pullPins() {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Pin")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
pins = results as! [NSManagedObject]
for pin in pins {
let pinLat = pin.valueForKey("latitude") as! Double
let pinLon = pin.valueForKey("longitude") as! Double
let pinCoordinate = CLLocationCoordinate2D(latitude: pinLat, longitude: pinLon)
let annotation = MKPointAnnotation()
annotation.coordinate = pinCoordinate
self.mapOutlet.addAnnotation(annotation)
}
}
catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
print("Pin Tapped")
}
override func viewDidLoad() {
super.viewDidLoad()
pullPins()
}
}
如果您没有收到地图视图委托消息,那是因为您还没有让自己成为地图视图的委托。例如:
self.mapOutlet.delegate = self
我一定是遗漏了一些明显的东西......
作品: 从 Core Data 添加一堆 MKPointAnnotations...显示在地图上
无效: 尝试在点击 pin 时显示打印语句。
我设置了 MKMapView Delegate,但没有实现 AnnotationView,因为我希望在点击 pin 后立即继续。宁愿不显示上下文对话框。
我错过了什么来识别引脚被窃听?
import UIKit
import MapKit
import Foundation
import CoreData
class MapViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapOutlet: MKMapView!
var latitude = 100.0 as Double
var longitude = 120.0 as Double
var pins = [NSManagedObject]()
func pullPins() {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Pin")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
pins = results as! [NSManagedObject]
for pin in pins {
let pinLat = pin.valueForKey("latitude") as! Double
let pinLon = pin.valueForKey("longitude") as! Double
let pinCoordinate = CLLocationCoordinate2D(latitude: pinLat, longitude: pinLon)
let annotation = MKPointAnnotation()
annotation.coordinate = pinCoordinate
self.mapOutlet.addAnnotation(annotation)
}
}
catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
print("Pin Tapped")
}
override func viewDidLoad() {
super.viewDidLoad()
pullPins()
}
}
如果您没有收到地图视图委托消息,那是因为您还没有让自己成为地图视图的委托。例如:
self.mapOutlet.delegate = self