在关闭视图控制器时执行功能

Posted

技术标签:

【中文标题】在关闭视图控制器时执行功能【英文标题】:Perform function on Dismiss of a View Controller 【发布时间】:2022-01-21 21:23:52 【问题描述】:

我正在视图控制器的 viewDidAppear 函数上调用 GET(method) API。我在我的第一个视图控制器上使用 导航控制器 呈现一个新的视图控制器。在第二个视图控制器上,我正在调用 Post Method 的 API 以将另一个条目添加到我之前的屏幕 Get method API。但是当我关闭第二个视图控制器时,Get API data 保持不变,当我再次运行代码时,数据在第一个视图控制器上更新。有人可以告诉我如何在第一个视图控制器上检查我的第二个视图控制器已被解除,以便我可以在那里调用 API。

【问题讨论】:

能否在您的问题中添加代码。有点难以理解。 试试viewWillDisappear() 在你的第一个视图控制器的 viewWillAppear 方法中调用 api @MuhammadNawaz 它在 viewWillAppear 中不起作用 【参考方案1】:

我得到了解决方案。通过在 viewDidAppear()viewWIllAppear() 上调用 API 不起作用。这将通过使用快速闭包来完成。

下面是代码:

    class 1stViewController: UIViewController 

      @IBAction func buttonTapped(_ sender: UIButton) 
           guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else  return 
        secondController.callbackClosure =  [weak self] in
            print("call API")
        
        self.navigationController?.pushViewController(secondController, animated: true)
       

在第二个视图控制器上:

class SecondViewController: UIViewController 

      var callbackClosure: ((Void) -> Void)?

      override func viewWillDisappear(_ animated: Bool) 
         callbackClosure?()
          
 

【讨论】:

以上是关于在关闭视图控制器时执行功能的主要内容,如果未能解决你的问题,请参考以下文章

视图控制器不会立即关闭并呈现新的视图控制器

关闭模态视图控制器后在根视图控制器中执行操作

关闭模态视图控制器

Swift - 关闭搜索控制器

UIAccessibility - 当关闭另一个视图时,将焦点设置到上一个辅助功能元素

在 Xcode 中执行 segue 后如何关闭视图控制器?