gpt4 book ai didi

ios - tintColor - 随机颜色,为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 07:12:43 26 4
gpt4 key购买 nike

我的类(class)有一个 tintColor 函数:

func pinColor() -> UIColor  {
switch status.text! {
case "online":
return UIColor(red: 46/255, green: 204/255, blue: 113/255, alpha: 1.0)
default:
return UIColor.red
}
}

我还有这个扩展:

extension ViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if let annotation = annotation as? Marker {
let identifier = "pin"
var view: MKPinAnnotationView
if let dequeuedView = map.dequeueReusableAnnotationView(withIdentifier: identifier)
as? MKPinAnnotationView {
dequeuedView.annotation = annotation
view = dequeuedView
} else {
view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
view.canShowCallout = true
view.calloutOffset = CGPoint(x: -5, y: 5)
view.rightCalloutAccessoryView = UIButton(type: .detailDisclosure) as UIView
view.pinTintColor = annotation.pinColor()
}
return view
}
return nil
}
}

我每 10 秒用 mapView 的数组加载我的数据,并像这样呈现它:

    func mapView() {
map.layoutMargins = UIEdgeInsets(top: 30, left: 30, bottom: 30, right: 30)
map.showAnnotations(markersArrayFiltered!, animated: true)
}

错误: - 每次加载新数据时,我的图钉颜色都不同,但我的数据没有改变。

Watch example video of error

我做错了什么?

最佳答案

您正在使用 dequeueReusableAnnotationView,它会返回一个由其标识符定位的可重用注释 View 。

但是您只是在第一次初始化 MKPinAnnotationView 时才设置图钉颜色。您必须在这两种情况下进行设置。这不仅适用于图钉颜色,还适用于基于数据的所有内容。

extension ViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if let annotation = annotation as? Marker {
let identifier = "pin"
var view: MKPinAnnotationView
if let dequeuedView = map.dequeueReusableAnnotationView(withIdentifier: identifier)
as? MKPinAnnotationView {
dequeuedView.annotation = annotation
view = dequeuedView
} else {
view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)

}
view.canShowCallout = true
view.calloutOffset = CGPoint(x: -5, y: 5)
view.rightCalloutAccessoryView = UIButton(type: .detailDisclosure) as UIView
view.pinTintColor = annotation.pinColor()
return view
}
return nil
}
}

关于ios - tintColor - 随机颜色,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096010/

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