ios - 在控制器之间传递变量 - Swift4
问题描述
我正在尝试将 1 个变量传递给另一个视图控制器,然后是另一个视图控制器。
var selectedPlace = Place {
name = Daniel Webster Highway;
country = United States;
lat = 42.72073329999999;
lon = -71.44301460000001;
}
当我在一个单元格上选择时,我可以访问一个变量selectedPlace
我想将它传递给我的 PlaceDetailVC 和 MapVC。
由于某些原因,我无法做到这一点。
地方VC
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! PlaceDetailVC
if let indexPath = tableView.indexPathForSelectedRow {
destinationVC.selectedPlace = (places?[indexPath.row])!
destinationVC.selectedTrip = selectedTrip!
}
}
PlaceDetailVC
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toMap" {
let destinationVC = segue.destination as! MapVC
if let indexPath = placesTable.indexPathForSelectedRow {
destinationVC.selectedPlace = selectedPlace
}
}
}
我也试试
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! MapVC
if let indexPath = placesTable.indexPathForSelectedRow {
destinationVC.selectedPlace = selectedPlace
}
}
地图VC
print(selectedPlace,"<<<<<<")
结果
我不断得到
关于我做错了什么的任何提示?
解决方案
如果导航按钮调用 segue “toMap”,则无需检查 indexPath
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toMap" {
let destinationVC = segue.destination as! MapVC
destinationVC.selectedPlace = selectedPlace
/*
if let indexPath = placesTable.indexPathForSelectedRow {
destinationVC.selectedPlace = selectedPlace
}*/
}
}
推荐阅读
- python - 根据字符串的一部分在列表中查找字符串的索引
- xslt - 试图理解 XSLT Muenchian 方法转换
- css - 如何正确设置 mat-checkbox 的样式
- macos - 以编程方式创建的控件不显示对焦环
- google-calendar-api - 如何找到未显示在 API 资源管理器中的已删除日历?
- git - 将本地 git 存储库同步到远程 gitlab 和 Overleaf
- jenkins - 使用 jenkins artifactory 插件获取构建列表?
- python - Understanding return statement in the function finding the median of numbers
- workbox - 缓存远程 HTTP 资产
- symfony - 测试响应的行为问题