Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在对另一个tableview调用disclose()后刷新tableview数据_Swift_Xcode - Fatal编程技术网

Swift 在对另一个tableview调用disclose()后刷新tableview数据

Swift 在对另一个tableview调用disclose()后刷新tableview数据,swift,xcode,Swift,Xcode,设置:表格视图控制器有一个按钮(Add),可以弹出另一个带有表单的视图控制器。我使用Realm来存储数据,因此无需将数据传回。但是,当我退出视图控制器并返回到表视图控制器时,我无法使tableView.reloadData()工作 我已经尝试了viewwillappease()和viewdideappease(),但它们都不在调用堆栈中 你知道我需要把这个放在哪里吗?你需要一个代表 let second = /// second.delegate = self 当你在第二次vc解雇时 dele

设置:表格视图控制器有一个按钮(Add),可以弹出另一个带有表单的视图控制器。我使用
Realm
来存储数据,因此无需将数据传回。但是,当我退出视图控制器并返回到表视图控制器时,我无法使
tableView.reloadData()
工作

我已经尝试了
viewwillappease()
viewdideappease()
,但它们都不在调用堆栈中

你知道我需要把这个放在哪里吗?

你需要一个代表

let second = ///
second.delegate = self
当你在第二次vc解雇时

delegate?.refresh()

可能您的第二个控制器正在以模式显示。根据:

如果视图控制器由popover内的视图控制器呈现,则在呈现的控制器被解除后,不会在呈现的视图控制器上调用此方法

您可以通过代理解决您的问题:

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()
    }
}