我有以下界面:
在表格视图中,我为用户设置了新值,并且当按下主视图中的“完成”按钮时,我想调用该函数来更新服务器中的数据。
我该怎么做?
我尝试过:
@IBAction func doneTapped(_ sender: Any){
ProfileEditingTableViewController().updateData()
}
但是另一个视图中的所有文本字段均为空,因为它似乎是ProfileEditingTableViewController的新实例。
updateData()不能为静态。
class ProfileEditingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func cancelButton(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
@IBAction func doneTapped(_ sender: Any) {
// Here I have to save the data from the other View
dismiss(animated: true, completion: nil)
}
}
class ProfileEditingTableViewController: UITableViewController {
func updateData() {
...
}
}
答案 0 :(得分:0)
此行
ProfileEditingTableViewController().updateData()
不正确,因为它创建了一个新实例,您需要使用委托来访问显示的ProfileEditingTableViewController
class ProfileEditingTableViewController: UITableViewController {
var profileInstance: ProfileEditingViewController!
}
当您显示个人资料中的信息时:
let info = //
info.delegate = self // here self is the profile instance
然后使用:
profileInstance.updateData()
//
编辑:将segue源连接到vc本身(黄色圆形图标),位于内部(ProfileEditingViewController
self.performSegue(withIdentifier: "goToNext", sender: nil)
//
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if segue.identifier == "goToNext" {
let des = segue.destination as! ProfileEditingTableViewController
des.profileInstance = self
}
}