ios - 我只能加载一次视图控制器吗?
问题描述
我用城市列表制作了一个表格视图。当我选择一个城市单元格时,它将传递城市名称并使用故事板中的 segue 显示城市的天气预报。但是,每次它似乎都会创建一个新的视图控制器。但我不希望它像这样发生。我希望它只能加载一次。对于用户来说,当他们没有互联网时,他们仍然可以看到数据,我为他们制作了一个刷新数据的按钮。这是我的代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "showCurrentWeather", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showCurrentWeather"{
let dvc = segue.destination as? WeatherViewController
let selectedIndexPath = self.tableView.indexPathForSelectedRow
if let selectedRow = selectedIndexPath?.row{
dvc?.infoFromViewOne=cityName[selectedRow]
}
}
我尝试使用导航控制器来推送视图控制器,
weatherViewController=self.storyboard?.instantiateViewController(withIdentifier: "weatherViewController") as! UIViewController
self.navigationController?.pushViewController(weatherViewController!, animated: true)
在weatherViewController中,我制作了一个自定义的后退按钮来弹出视图控制器,
@objc func backAction(){
navigationController?.popViewController(animated: true)
}
但是,使用导航控制器时,我不知道如何将所选单元格中的城市名称传递给天气视图控制器。我该如何解决这个问题?谢谢
解决方案
您不需要强制转换它,as! WeatherViewController
因为as! UIViewController
它是默认返回是可选的UIViewController
weatherViewController = self.storyboard?.instantiateViewController(withIdentifier: "weatherViewController") as! WeatherViewController
weatherViewController.infoFromViewOne = cityName[indexPath.row]
self.navigationController?.pushViewController(weatherViewController, animated: true)
当 VC 不可见时将其保存在内存中也不是一个好主意,您必须遵循 create/deinit,因为它是
推荐阅读
- javascript - 用(查找和过滤)替换对象数组中的所有状态不起作用
- python - 如何在 pycharm 中使用 tkinter 打开 python 代码来编辑代码?
- machine-learning - 分层K折后怎么办?
- javascript - 如何用单一功能在单页中实现多类型元素
- postgresql - 尝试克隆 postgres 数据库时出错(pg_dump、pg_restore)
- python - 有没有人尝试过使用“NuScenes 数据集”?
- flutter - 如何:根据传入数据更新(并允许更改)下拉菜单
- sql - SQL 更新多个值
- reactjs - 在子路由上找不到反应构建静态
- java - 删除语句后的 Spring 事务管理回滚