gpt4 book ai didi

ios - didSelectAnnotationView 未调用

转载 作者:IT王子 更新时间:2023-10-29 05:29:03 26 4
gpt4 key购买 nike

我想在点击注释后使用它。我已经在 Apple 的文档中进行了查找,并且进行了谷歌搜索,但我找不到为什么这与应该如何完成有什么不同。基本上;我没有得到 println("Pin clicked");

为什么不呢?

    func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
{
if !(annotation is MKPointAnnotation) {

return nil
}

let reuseId = "test"

var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView.canShowCallout = true

}
else {
anView.annotation = annotation
}

return anView
}
func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!)
{
println("Pin clicked");
}
func setAnnotationPinOnMap(annotation : NSManagedObject)
{

var subject: AnyObject? = annotation.valueForKey("subject")
var desc: AnyObject? = annotation.valueForKey("desc")
var langitude: AnyObject? = annotation.valueForKey("langitude")
var longitude: AnyObject? = annotation.valueForKey("longitude")
println(annotation);
let pin = MKPointAnnotation()

let location = CLLocationCoordinate2D(
latitude: longitude as CLLocationDegrees,
longitude: langitude as CLLocationDegrees
)
println(location.longitude, location.latitude)
pin.setCoordinate(location)
pin.title = subject as String!
pin.subtitle = desc as String!
println( pin.coordinate.longitude)
viewForAnnotation(pin);
mapView.addAnnotation(pin)
}

我已经导入了 map 工具包并包含了 map View 委托(delegate)。

最佳答案

要回答最初的问题,didSelectAnnotationView 很可能没有被调用,因为未设置 map View 的 delegate 属性。另一个常见原因是注释的 title 为空。

在更新的问题中,图钉不会以 viewForAnnotation 的实现方式显示,因为它创建了一个 MKAnnotationView 但没有设置它的 image 属性。 MKAnnotationViewimage 属性默认为 nil,因此引脚在那里但不可见。

如果你想显示标准的红色图钉,要么:

  • 根本不要实现 viewForAnnotation 委托(delegate)方法, map View 默认将显示红色图钉。
  • 实现 viewForAnnotation 委托(delegate)方法并创建一个 MKPinAnnotationView,它会自动显示“图钉”图像。

因此,要么将 pin 的 image 设置为一些自定义图像:

anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView.canShowCallout = true
anView.image = UIImage(named:"CustomImage") // <-- add this line

或者创建一个 MKPinAnnotationView 并选择性地设置它的 pinColor:

var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if anView == nil {
anView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView!.canShowCallout = true
anView!.animatesDrop = true
anView!.pinColor = .Purple // or Red or Green
}
else {
anView!.annotation = annotation
}

关于ios - didSelectAnnotationView 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26713582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com