SwiftUI:与viewDidLoad和viewWillDisappear等效的东西是什么



我曾经把GCDWebServer的start()stop()放在viewDidLoadviewWillDisappear中。

现在在 SwiftUI 中,我应该将它们放在什么位置? 我尝试将服务器 init(( 放入scene(_ scene: UIScene, willConnectTo中,并将服务器 deinit(( 放入sceneDidEnterBackground(_ scene:中。

启动应用程序后,服务器成功启动,当我将应用程序推送到后台时,服务器已停止。这工作正常。但是,当应用再次返回到前台时,服务器不会再次启动。

守则:

class BrandViewController: UIViewController {
let mockServer = GCDServer()
let tableView = UITableView()
private let products = ProductAPI.loadProducts()
let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
super.viewDidLoad()

navigationItem.searchController = searchController

self.navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Search"

view.backgroundColor = .white

tableView.register(ProductCell.self, forCellReuseIdentifier: "productCell")
tableView.dataSource = self
tableView.delegate = self
view.addSubview(tableView)

// Start GCDWebServer
mockServer.initWebServer()
}

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.frame = view.bounds
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
mockServer.stopWebServer()
}
}

如果您在sceneDidEnterBackground上销毁服务器,那么解决方案将是将服务器创建(以及,正如我假设的那样开始(从scene(_ scene: UIScene, willConnectTo移动到sceneWillEnterForeground

相关内容

  • 没有找到相关文章

最新更新