gpt4 book ai didi

Swift Mapbox 自定义用户位置注释( fatal error )

转载 作者:行者123 更新时间:2023-11-30 12:00:54 25 4
gpt4 key购买 nike

我想创建一个自定义用户位置 pin,它从 Firebase 获取 photoURL 并显示它。我尝试使用这个 Swift 3 - Mapbox - Customize User Location Annotation作为引用。但是,当我构建自定义类时出现错误。我不确定我可以在 MGLUserLocationAnnotationView 中编辑很多内容,但它似乎继承 UIView 所以我认为应该没问题。另外,我应该在 View 类中还是在 View Controller 中从 Firebase 获取数据?

这是我的自定义类

class CustomUserLocationDisplayView: MGLUserLocationAnnotationView {

var view: UIView!

@IBOutlet weak var displayView: UIImageView!
var imageView: UIImageView!

required override init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
setup()
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("Error") <--------- I get this FATAL Error
}

func readFirebaseUserProfile(){
let user = Auth.auth().currentUser
let photoURL = user?.photoURL
displayView.kf.setImage(with: photoURL)
}

func setup() {
view = loadViewFromNib()
displayView.layer.cornerRadius = 30
addSubview(view)
}

func loadViewFromNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "CustomUserLocationDisplayView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView

return view
}
}

这是我的注释函数

func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
if annotation is MGLPointAnnotation{

}else{
var userLocationAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "user") as? CustomUserLocationDisplayView

if userLocationAnnotationView == nil {
userLocationAnnotationView = CustomUserLocationDisplayView(reuseIdentifier: reuseIdentifer)

}

return userLocationAnnotationView
}
}

最佳答案

一个可能的问题:我不知道您在哪里调用 readFirebaseUserProfile。我会仔细检查它是否被调用。

此外,您能否在 if userLocationAnnotationView == nil { 之后放置一个断点,看看是否到达了该断点?您还可以尝试以下操作:

 if annotation is MGLUserLocation && mapView.userLocation != nil {
userLocationAnnotationView = CustomUserLocationDisplayView(reuseIdentifier: reuseIdentifer)

return userLocationAnnotationView
} else if annotation is MGLPointAnnotation {
// Set annotations here
}
return nil

关于Swift Mapbox 自定义用户位置注释( fatal error ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47255337/

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