如果我有两个ViewControllers
,其中一个包含UITableView
,另一个包含更新tableView
中的数据。弹出viewController
并使用tableView
返回视图时,如何重新加载表数据?
我已经尝试使用viewDidAppear
答案 0 :(得分:1)
您可以像Rajesh建议的那样使用viewWillAppear:
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
}
或者您可以使用回调函数来传递数据并重新加载视图控制器1的表视图。
在ViewController 2中,定义您的回调函数:
// Callback function
var callbackResult: ((data) -> ())?
在调用ViewController 1之前先调用它
callbackResult?(data)
self.navigationController?.popViewController(animated: true)
在ViewController 1中,使用回调函数的闭包收集结果并重新加载tableView。例如,这可能在prepareForSegue内部发生:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToViewController2" {
let destinationVC = segue.destination as! ViewController2
// Set any variable in ViewController2
destinationVC.callbackResult = { result in
// assign passing data etc..
self.tableView.reloadData()
}
}
}
答案 1 :(得分:0)
您可以尝试执行以下操作:
class TableViewController: UITableViewController {
func showUpdatingViewController() {
let vc = UpdatingViewController()
vc.onUpdate = { [weak self] in
self?.tableView.reloadData()
}
navigationController?.pushViewController(vc, animated: true)
}
}
class UpdatingViewController: UIViewController {
var onUpdate: (() -> Void)?
func updatesFinished() {
onUpdate?()
dismiss(animated: true, completion: nil)
}
}