ios - 从 "Over Current Content"ViewController 返回时如何触发一些代码?

标签 ios swift uiviewcontroller swift4

我的应用中有两个ViewController,ViewController和ViewController2

在 ViewController 中,一个按钮设置 Present Modally segue to "ViewController2"

并且 ViewController 覆盖 viewWillAppear

override func viewWillAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    print("will appear")
}

在 ViewController2 中,返回按钮

@IBAction func close(_ sender: Any) {
    self.dismiss(animated: true, completion: nil)
}

现在它仍然可以触发 viewWillAppear 然后我从 ViewController2 返回到 ViewController

如果我将 ViewController2 的显示从 Full Screen 更改为 Over Current ContextviewWillAppear 将不会被触发

返回时如何触发一些代码?

最佳答案

你可以在不放弃 Storyboard转场的情况下做到这一点,但你仍然必须在 ViewCONtroller2 中设置 will/did Disappear 处理程序:

class ViewController: UIViewController {
    ...
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destination = segue.destination as? ViewController2 {
            (segue.destination as? ViewController2).onViewWillDisappear = {
                //Your code
            }
        }
    }
}

class ViewController2: UIViewController {
    var onViewWillDisappear: (()->())?

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        onViewWillDisappear?()
    }
    ...
}

关于ios - 从 "Over Current Content"ViewController 返回时如何触发一些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48185775/

相关文章:

ios - 如何知道用户正在使用通用链接进入应用程序

ios - MPMediaQuery 从 persistentID 返回轨道而不是播放列表

Swift 在尝试向上移动布局时解包可选值时意外发现 nil

ios - Swift 项目链接器错误

ios - 从销售中删除应用程序是否也会终止自动续订订阅?

ios - 屏幕旋转时,后退按钮变为 Root View Controller

ios - 如何使用 Swift 检测 iOS 应用何时出现在前台?

ios - swift 如何通过关闭当前 View Controller 将数据推送到其他 View ?

ios - 仅当显示导航 Controller 的最顶层页面时才使 UINavigationBar 透明?

ios - swiftyJSON 从数组中获取随机索引