ios - Swift 4 覆盖 func viewDidAppear(_ 动画 : Bool) not triggering when i dissmiss viewcontroller

标签 ios swift swift4

我有一个 viewControllerA,它以编程方式在 Storyboard中呈现,没有 segue,如下所示:

let storyboard = UIStoryboard(name: "IdStoryBoard", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "idcontroller") as! BController
self.present(controller, animated: true, completion: nil) 

然后从 viewControllerA 我转到 viewControllerB,使用 Storyboard segue。

当我关闭 viewControllerB self.dismiss(animated: true, completion: nil) 时,viewControllerA 中未触发 viewDidAppear .

最佳答案

如果您想在关闭 viewControllerB 时触发 viewControllerA 中的事件,我建议创建一个委托(delegate)方法来链接两者。

在您的viewControllerA 上包含以下内容:

protocol TriggerEventDelegate {
    func eventToBeTriggered();
}

然后使您的viewControllerA 符合该协议(protocol):

extension AController: TriggerEventDelegate {
    func eventToBeTriggered() {
         // Implement whatever you want to trigger here
    }
}

在您的viewControllerB上,创建一个委托(delegate)引用:

class BController: UIViewController {
    weak var delegate: TriggerEventDelegate? 
}

在您关闭 viewControllerB 时执行触发:

func dismiss() {
    delegate?.eventToBeTriggered()
    self.dismiss(animated: true, completion: nil)
}

最后但并非最不重要的,当从 viewControllerA 移动到 viewControllerB 时,将您的 delegate 设置为 viewControllerA :

func pushFromAToB() {
    let storyboard = UIStoryboard(name: "IdStoryBoard", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier:     "idcontroller") as! BController
    controller.delegate = self
    self.present(controller, animated: true, completion: nil) 
}

您的事件现在将被正确触发,而无需依赖 viewDidAppear

关于ios - Swift 4 覆盖 func viewDidAppear(_ 动画 : Bool) not triggering when i dissmiss viewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46929774/

相关文章:

ios - 当单元格被重用时,我在 TableViewCell 中的心脏按钮状态被保存

ios - RealityKit 仅显示暗图像

ios - LoadVIew() 中的 UIVisualEffectView

ios - 如何在 uipickerview (swift 4) 上居中工具栏按钮

swift - 协议(protocol)仅由 struct 或 immutable 实现

ios - Swift相当于给一个属性设置多个值

ios - 这次崩溃的原因是什么?

ios - iOS-保存时最后一个字符消失

ios - 在 viewDidLoad 中模拟按钮点击

ios - 使用 swift 检查从图库中选择的模式 uiimage