我想将数据DetailsViewController
从MapViewController
.
我正在尝试使用以下代码保留所选注释的数据。我还添加了一个准备转场方法。
我正在从 Firebase 检索数据,因此每个注释都有不同的标题和描述。
在titleLabel
和descriptionLabel
不会显示DetailsViewController文本。
我是编程新手,任何帮助将不胜感激!如果我需要提供任何其他信息,请告诉我。
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
var selectedAnnotation = view.annotation
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "goToDetails") {
let detailsVC = segue.destination as! DetailsViewController
detailsVC.TitleLabel.text = selectedAnnotation?.title as! String
detailsVC.DescriptionLabel.text = selectedAnnotation?.subtitle as! String
}
}
self.performSegue(withIdentifier: "goToDetails", sender: nil)
}
在 DetailsViewController 中创建两个字符串变量。
var detailTitle = ""
var detailDescription = ""
在您的第一个控制器中执行以下操作:
var selectedTitle = ""
var selectedDescription = ""
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToDetails" {
let detailsVC = segue.destination as! DetailsViewController
detailsVC.detailTitle = selectedTitle
detailsVC.detailDescription = selectedDescription
}
}
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let selectedAnnotation = view.annotation {
if let title = selectedAnnotation.title {
self.selectedTitle = title
}
if subtitle = selectedAnnotation.subtitle {
self.selectedDescription = subtitle
}
}
self.performSegue(withIdentifier: "goToDetails", sender: nil)
}
问题是,你试图在没有创建标签的情况下设置你的文本。在你的第二个视图控制器(DetailsViewController)中这样做,所以标签被创建,你可以给他们你的文本
override func viewDidLoad() {
super.viewDidLoad()
self.titleLabel.text = detailTitle
self.descriptionLabel.text = detailDescription
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句