ios - 如何调用api url方法,以便每次应用程序从后台进入前台时重新加载应用程序?

标签 ios swift xcode

我正在构建一个将数据从 API URL 加载到 TableView 单元格的应用程序。现在,仅当应用程序首次启动时,它才会调用 API 并将数据加载到单元格中。每次应用程序从后台进入前台时,我都想调用 API 并重新加载数据。

我尝试在场景委托(delegate)文件中的以下方法中调用我的 setup() 方法,认为每次应用程序进入后台时都会调用这些方法。

func sceneWillEnterForeground(_ scene: UIScene) {
  tableViewController.setup()
  print("sceneWillResignActive")
}

func sceneDidBecomeActive(_ scene: UIScene) {
  tableViewController.setup()
  print("sceneWillResignActive")
}

API 调用成功,但数据未重新加载到 TableView 单元格中。

这是我的实际代码,该文件也包含所有 TableView 委托(delegate)和数据源方法。

class TableViewController: UITableViewController {
 override func viewDidLoad() {
     super.viewDidLoad()

     tableView.separatorStyle = .none
     navigationController?.hidesBarsOnSwipe = true

     setup()
 }

 func setup() {
     WebService().getArticles() { articles in
         if let articles = articles {
             self.articleListVM = ArticleListViewModel(articles: articles)
             DispatchQueue.main.async {
                 self.tableView.reloadData()
             }
         }
     }
 }
}

请调查一下。

最佳答案

您可以对进入前台的应用程序使用观察器来执行此操作。在 viewdidLoad 添加这段代码:

NotificationCenter.default.addObserver(
  self,
  selector: #selector(willEnterForeground),
  name: UIApplication.willEnterForegroundNotification,
  object: nil
)

然后当应用程序进入前台时将调用此函数:

@objc func willEnterForeground() {
    // Your API code here
}

关于ios - 如何调用api url方法,以便每次应用程序从后台进入前台时重新加载应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342828/

相关文章:

ios - NSFileHandle 写数据 : exception handling

html - 从 iOS 应用程序中的远程 HTML/json 项目读取 json

ios - 在 iOS App 中处理大量 API 请求(不使用 Alamofire)

ios - 在没有缓存的情况下检查 HTTP 状态代码

ios - 表达式类型不明确,没有更多上下文错误

ios - 同一窗口上有 2 个不同的 ScrollView 并以不同的速度滚动

ios - 如何正确注销并继续到 View Controller ?

iphone - 如何从 appdelegate 调用方法

objective-c - Fabric macOS 异常有时没有被捕获?

iPhone,如何获取设备短日期格式?