swift - 如何在其他控制器中使用 UIlabel.text?
问题描述
我有两个控制器,即 Map 和 BottomSheet。单击地图中的标记后,我想更改 UIlabel 文本。
BottomsheetController.swift
var Data : [DataClass] = []
class BottomSheetViewController : UIViewController{
@IBOutlet weak var Id: UILabel!
func getid(id : String?){
let kick = id
self.Id.text = kick
}
}
MapViewController.swift
class MapViewController: UIViewController ,GMUClusterManagerDelegate{
@IBOutlet weak var mapView: GMSMapView!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
addBottomSheetView()
}
// MARK: Click marker
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
if let poiitem = marker.userData as? POIItem {
let bvc = BottomSheetViewController()
bvc.getimei(imei: Data[0].id)
}
return true
}
}
它一直说致命错误:在隐式展开可选值时意外发现 nil
解决方案
只需使用 segue 在两个控制器之间传递数据
performSegue(idnitfierName,sender)
然后,
履行(){
让 vc = segue.destination 为!MapViewController vc.variableName = 你必须通过的变量
}
推荐阅读
- javascript - 将替换方法的组合转换为一个
- ruby-on-rails - 如何使用 Proc.new
- python - 尝试使用 join/split 删除我自己的停用词
- python - 从包含索引的另一个子列表的子列表中获取项目
- javascript - 使用 Sequelize 破坏模型的麻烦
- batch-file - SVN 和 JIRA 集成以使用 API 检查 JIRA 中是否存在问题
- sql - SQL 全外连接 + group by + count 列
- android - 当在 Tabs 中再次打开 Fragment 时,Recycler View 变为空视图
- c# - 调试 ASP.NET (.NET Framework 4.8) Web 应用程序时,没有为新 csproj 格式的 (.NET Framework 4.8) 库加载符号
- php - PHP Null 合并混乱