设置:表视图控制器具有按钮(添加),该按钮弹出带有表单的另一个视图控制器。我正在使用Realm
来存储数据,因此不需要将数据传回。但是,当我dismiss()
使用视图控制器并返回表视图控制器时,我无法使tableView.reloadData()
正常工作。
我尝试过viewWillAppear()
和viewDidAppear()
,但似乎都没有出现在调用堆栈中。
有什么想法需要放在这里吗?
答案 0 :(得分:1)
您需要一名代表
let second = ///
second.delegate = self
在第二个vc中关闭
delegate?.refresh()
答案 1 :(得分:0)
第二个控制器可能正在模态显示。根据{{3}}:
如果视图控制器是由弹出框内的视图控制器提供的,则在关闭所显示的控制器后,不会在呈现的视图控制器上调用此方法。
您可以通过委托人解决问题:
protocol ControllerBDelegate {
func willDismiss()
}
class ControllerA {
func open() {
let vc = ControllerB()
vc.delegate = self
self.present(vc, animated: true)
}
}
extension ControllerA : ControllerBDelegate {
func willDismiss() {
self.tableView.reloadData()
}
}
class ControllerB {
weak var delegate: ControllerBDelegate?
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
delegate?.willDismiss()
}
}