gpt4 book ai didi

iOS Swift - 如何在返回信息窗口之前等待请求结束(谷歌地图)

转载 作者:行者123 更新时间:2023-11-29 11:43:51 26 4
gpt4 key购买 nike

我正在使用 Google map 和自定义信息窗口。

我遇到一个问题,我需要更新标签,但数据来自成功回调。

这里的问题是,当数据可用时,我已经返回了我的信息窗口,我无法再更新它,因为它已经呈现( View 的快照)。

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {

let infoWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self, options: nil)?.first as! CustomInfoWindow

let obs = marker.userData as! Observation

ObsService.shared.getCityFromLatLong(lat: String(obs.coordinate.latitude), long: String(obs.coordinate.longitude)) { response in
infoWindow.outletPlaceLabel.text = response
}

infoWindow.setDateAndTime(timestamp: obs.timestamp)

return infoWindow
}

我知道我有几个选择,例如:

  • 通知
  • 等到请求完成(阻塞 UI?)
  • 安排我的任务
  • 具有逻辑的初始化方法,而不是仅使用 loadNibNamed

我开始使用 Swift 3 进行开发。

编辑:它与 sleep (2) 一起工作。但是每次我需要显示信息窗口时我都无法阻止 UI。

我找不到其他解决方案。

最佳答案

var cityName: String?

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
if cityName == nil {
let obs = marker.userData as! Observation
ObsService.shared.getCityFromLatLong(lat: String(obs.coordinate.latitude), long: String(obs.coordinate.longitude) { response in
self.cityName = response
// Replace the existing map view with a new one here. Or call it's refresh function if it has one (I don't know, haven't used Google map view)
return
}
}
return self.mapViewHelper(mapView, markerInfoWindow: marker, city: cityName ?? "")
}

func mapViewHelper(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker, city: String?) -> UIView? {
let infoWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self, options: nil)?.first as! CustomInfoWindow
let obs = marker.userData as! Observation

infoWindow.outletPlaceLabel.text = response
infoWindow.setDateAndTime(timestamp: obs.timestamp)

return infoWindow
}

如果你最初使用Interface builder设置了 map View ,你可以给它一个标签,然后搜索带有相关标签的 View ,在我写评论的地方实例化一个新的 map View ,并替换现有的 map View (从现有 map View 复制其框架)。 map View 也可能具有您可以调用的刷新功能。有关如何使用标签搜索 View 的 View ,请参阅文档(抱歉,如果那是在教祖母吸鸡蛋!)

关于iOS Swift - 如何在返回信息窗口之前等待请求结束(谷歌地图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058658/

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