gpt4 book ai didi

ios - 符合 MKAnnotation 协议(protocol)的类的自定义方法

转载 作者:搜寻专家 更新时间:2023-10-31 22:55:50 24 4
gpt4 key购买 nike

我有一个类:

class MyAnnotion: NSObject, MKAnnotation {

let title: String?
let subtitle: String?
let item: MyCustomItem
let coordinate: CLLocationCoordinate2D

init(customItem: MyCustomItem, currentLocation: CLLocation) {
coordinate = item.coordinate
pageId = "\(item.pageId)"
title = "\(item.title)"
item = myCustomItem
}

//TODO: Even though in mapView viewFor: the annotation is a WikiAnnotation, it wont recognize any custom function defined here
func imageUrl() -> String? {
guard let url = item.imageUrl else {
return nil
}
return url
}
}

当我将注释加载到 map 中时,我将它们加载为 MyAnnotion

mapView viewFor: 函数传递了一个 MKAnnotation 注释,但当我检查它时它实际上是一个 MyAnnotation

问题是,如果我尝试访问 imageUrl() 方法,它会告诉我 MKAnnotation 没有该方法。

我已经尝试过各种愚蠢的事情,比如将其转换为我的自定义注释并在 MKAnnotation 上进行扩展。

关于如何从该自定义类中获取 imageUrl 有什么想法吗?

谢谢!

最佳答案

正如我在评论中所说,您需要转换为您的自定义注释类,

这是代码

func mapView(_ map: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

if let customAnnotation = annotation as? MyAnnotion{
let imageUrl = customAnnotation.imageUrl()
}
}

关于ios - 符合 MKAnnotation 协议(protocol)的类的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616315/

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