我有一个ViewController(VCA)与TableView里面。从这个ViewController可以调用另一个ViewController(VCB)。在第二个VC中,可能会向用于在VCA中填充TableView的plist添加一个项目。问题是,当我保存新项目并关闭VCB时,我无法在VCA中重新加载TableView。关闭viewController后重新加载tableView
我已经找到了很多例子:
How can you reload a ViewController after dismissing a modally presented view controller in Swift?
How to call reload table view after you call dismissViewController in swift?
How to reload tableview from another view controller in swift
Update the data of a TableViewController after add item
Update the first view after dismissing Popover
Table view is not getting updated after dismissing the popover?
看完之后我试图用这个代码:
**IN VCB**
import UIKit
protocol AddItemDelegateProtocol {
func didAddItem()
}
class VCB: UIViewController {
var delegate : AddItemDelegateProtocol?
...
}
@IBAction func saveButton(_ sender: Any) {
....
self.delegate?.didAddItem()
dismiss(animated: true, completion: nil)
}
**In VCA**
class VCA: UIViewController, UITableViewDelegate, UITableViewDataSource, AddItemDelegateProtocol {
let addItemVC = VCB()
...
override func viewDidLoad() {
super.viewDidLoad()
addItemVC.delegate = self
...
}
func didAddItem() {
self.tableView.reloadData()
}
但这不起作用。我不明白我在哪里错了。 你能帮我吗?
编辑:我的解决方案 我以这种方式解决:
我创建了一个单,其中我宣布:
class DataManager {
static let shared = DataManager()
var firstVC = VCA()
.....
}
然后,在VCA的viewDidLoad中:
DataManager.shared.firstVC = self
现在,在saveButto VCB的N,我可以打电话:
@IBAction func saveButton(_ sender: Any) {
........
DataManager.shared.firstVC.tableView.reloadData()
dismiss(animated: true, completion: nil)
}
你如何转向VCB?显示它的代码 –
白衣从VCA中的按钮简单连接 –
@Aravind A R感谢提示 –