swift - 如何回到之前的场景并重新加载数据?
问题描述
我在 Storyboard 上有两个场景:一个在栏上显示带有加号按钮的项目列表,以转到另一个具有添加新项目的表单的场景。我正在本地存储上保存,在保存功能中,我想用新数据返回上一页。
这是保存功能:
@IBAction func AddTrack(_ sender: Any) {
let item = TrackItem(context: PersistenceService.context)
item.kms = Int32(kmsField!.text!)!
item.liters = Float(litersField!.text!)!
item.date = textFieldPicker!.text!
PersistenceService.saveContext()
navigationController?.popViewController(animated: true)
self.TrackList.append(item)
self.tableView?.reloadData()
}
知道我在 viewDidLoad() 和 viewDidAppear() 中使用了这个函数
func GetData(){
let fetchRequest: NSFetchRequest<TrackItem> = NSFetchRequest<TrackItem>(entityName: "TrackItem")
do{
let TrackList = try PersistenceService.context.fetch(fetchRequest)
self.TrackList = TrackList
self.tableView?.reloadData()
}catch{
}
}
解决方案
您可以使用 NotificationCenter 或委托(取决于您要实现的目标)
通知中心示例:
VC1,拍照:
buttonTapped / function () {
// Upload a Photo()
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
self.dismiss(animated: true, completion: nil)
}
}
VC2,显示所有照片:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(loadList), name: NSNotification.Name(rawValue: "load"), object: nil)
}
@objc func loadList(notification: NSNotification) {
//get data, reload data, etc
}
推荐阅读
- multithreading - 在弹簧控制器中测试线程 lambda 函数
- c - 使用 3D 数组到线性索引宏进行三维泊松乘法时出现分段错误
- ios - 在 iOS 应用程序中运行 C 守护程序
- webpack - wepack4 vuejs ssr es5 : (0 , _app.createApp) 不是函数
- javascript - Angularjs和材料设计:无法实例化模块ngMaterial
- python - requirements.txt 中的 python 版本与 setup.py 中的安装要求有关
- ubuntu - PhpStorm 无法在 Ubuntu 18.04 上启动
- javascript - 将鼠标悬停在图像地图中的某个区域上时显示元素
- reactjs - 异步更新后将 props 传递给子组件
- javafx - 将孩子添加到边框中心调整顶部按钮的大小