我正在构建一个将数据从 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/