gpt4 book ai didi

swift - TableCell 转至 mapkit

转载 作者:行者123 更新时间:2023-11-28 14:15:49 25 4
gpt4 key购买 nike

我正在尝试使用 segue 将注释传递给 mapkit 但是当我测试它时总是以 fatal error 结束:在展开可选值时意外发现 nil annotation is not a nil obj but mapView is

tableView Controller 中的 segue 代码

if segue.identifier == "FocusOn"{
let path = tableView.indexPathForSelectedRow
let controller = segue.destination as! MapViewController
let animal = animalList[(path?.row)!]
let annotationFocus = FencedAnnotation(newTitle: animal.name!, newSubtitle: animal.animaldescription!, lat: animal.latitude, long: animal.longtitude, newType: animal.type!, newPhoto: animal.photo!)
controller.addAnnotation(annotation: annotationFocus)
}

}

map View Controller 中的函数

 func addAnnotation(annotation: FencedAnnotation) {
self.mapView.addAnnotation(annotation)
self.mapView.delegate = self
}

最佳答案

我认为这是因为 viewDidLoad 在 segue 完成之前没有被调用。

为此,不要在您的 tableViewController 中调用 addAnnotation,而是将注释直接发送到您的 mapViewController 并调用 addAnnotation viewDidAppearviewDidLoad 中。

在你的 mapViewController 中你需要

var annotation: FencedAnnotation!

在您的 tableViewController 中将注释发送到 mapViewController

let annotationFocus = FencedAnnotation(newTitle: animal.name!, newSubtitle: animal.animaldescription!, lat: animal.latitude, long: animal.longtitude, newType: animal.type!, newPhoto: animal.photo!)
controller.annotation = annotationFocus

并在viewDidAppear中调用addAnnotation

override func viewDidAppear(_ animated: Bool) { 
addAnnotation(annotation)
}

关于swift - TableCell 转至 mapkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52194522/

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