gpt4 book ai didi

ios - 如何使 Http 请求在 TableView 单元格之前按时加载

转载 作者:行者123 更新时间:2023-11-30 10:51:50 25 4
gpt4 key购买 nike

由于我是 iOS 新手,因此这里可能缺少设计或简单的细节,但无法弄清楚这一点:

我有一个funcgetWeatherData() ,根据从另一个 View Controller 收到的位置,从 http 获取天气状况。请求并将其分配给 HikeModel。该函数在 ViewDidLoad() 的方法中被调用.

func之后获取天气状况,它将其传递给 subview Controller 。其中子 VC 是 TableView Controller 。问题是我的TableViewCell在父 View Controller 中,加载速度比 http 请求完成的速度要快。当单元格标签和图像尝试检索应该分配值的信息时,它们什么也不是,因为 http请求未按时完成。

我还尝试使用 DispatchQueue.main.async但没有显示出任何差异。

我正在做一个本地人 http使用 Swift4 请求。

有关我的项目结构的更多详细信息,我正在根据这项工作进行:https://medium.com/@phillfarrugia/re-creating-the-siri-shortcuts-drawer-interaction-9b2bc94e0b05

ViewDidLoad

let group = DispatchGroup()

group.enter()

DispatchQueue.main.sync {
self.getWeatherData(hikeLocation: self.startHikeLocationString)
group.leave()
}

发送信息的方法fillDrawer ,其中应包含分配给 HikeModel 的天气变量。

private func configureDrawerViewController() {
let compressedHeight = ExpansionState.height(forState: .compressed, inContainer: view.bounds)
let compressedTopConstraint = view.bounds.height - compressedHeight
containerViewTopConstraint.constant = compressedTopConstraint
previousContainerViewTopConstraint = containerViewTopConstraint.constant

// NB: Handle this in a more clean and production ready fashion.
if let drawerViewController = children.first as? DrawerViewController {
//send distnace too
drawerViewController.delegate = self
drawerViewController.fillDrawer(hike: self.hikeModel, userLocation: self.userLocation)
}

TableView CellsForRowAt

cell.temperature.text = hikeModel.temperature
cell.weather.text = hikeModel.weather
cell.weatherIcon.text = hikeModel.weatherIcon
cell.humidity.text = hikeModel.humidity
cell.barometer.text = hikeModel.barometer
cell.sunrise.text = hikeModel.sunrise
cell.sunset.text = hikeModel.sunset

我期望 tableViewCell在子 Controller 中加载http之后请求在父 View Controller 中完成。

最佳答案

您的代码不完整,无法识别问题,但您应该这样做:

1)然后从Web服务加载数据,

2)重新加载tableView

在你的ViewDidLoad

let group = DispatchGroup()
group.enter()

DispatchQueue.main.sync {
self.getWeatherData(hikeLocation: self.startHikeLocationString)
group.leave()
}

数据建模完成后添加一行,它应该在ma​​inQueue

yourtable.reloadData()

关于ios - 如何使 Http 请求在 TableView 单元格之前按时加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54383729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com