首页 > 解决方案 > 使用 popOver 打开第二个视图时不调用 viewWillDisapper

问题描述

在我的 mainVC 上,我有一个带有按钮的TableView ,它应该打开 secondVC,我可以在其中添加要在 Table 中显示的内容,类型为:“Present As Popover”。

我正在用performSegue(withIdentifier:"goToOtherView", sender: nil.

class FirstViewController: UIViewController {
    
    @IBOutlet weak var tableView: UITableView!
    
    var groupData = ["Data, Data1, Data2"]

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = .green
        
        tableView.delegate = self
        tableView.dataSource = self
        
    }

    @IBAction func btnTapped(_ sender: Any) {
        
        performSegue(withIdentifier: "goToOtherView", sender: nil)
    }
    
    override func viewWillAppear(_ animated: Bool) {
        print("FirstViewController will appear")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        print("FirstViewController did appear")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        print("FirstViewController will disappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        print("FirstViewController did disappear")
    }
    
}

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = .blue

    }
    
    override func viewWillAppear(_ animated: Bool) {
        print("SecoundViewController will appear")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        print("SecoundViewController did appear")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        print("SecoundViewController will disappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        print("SecoundViewController did disappear")
    }
    
}

故事板在此处输入图像描述

当我启动应用程序时当我启动应用程序时

当我打开第二个VC当我打开第二个VC

当我关闭第二个VC在此处输入图像描述

FirstViewController willDisappearanddidDisappear永远不会被调用,甚至当 secondVC 关闭时willAppearand didAppear我想tableView.reloadData()在 FirstView willAppear/didAppear

当你添加一个新的闹钟时,它有点像 IOS 默认时钟应用程序。

标签: swiftviewpopoverlifecycle

解决方案


快速猜测,但我认为这是因为演示模式pageSheet

您可以尝试将其更改为全屏吗?

您还可以将 segue 配置更改为:在此处输入图像描述

视图消失不会被调用,因为视图没有从窗口中完全消失


推荐阅读