更新UILabel以显示当前位置

时间:2019-04-05 09:22:45

标签: ios swift uilabel

所以我正在执行GET请求并解析JSON以获取当前位置,所有这些都在locationManager函数中完成。 现在我有一个UILabel出口,我想根据JSON的结果将所有时间一直更新到地图上显示的当前位置(确实是反向地理编码),但是如果我通过locationManager访问label.text,我会有一个延迟+ Xcode告诉我,只能通过主线程完成。

所以我尝试制作一个全局变量并在locationManager中对其进行更新,但是当我访问viewDidLoad()中的label.text并将其提供给全局变量时,它保持为空(初始值)

对此有什么可能的解决方法?

var addrs = "" // the global variable 

...

  func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    //Code
     addrs = result.response.view[0].result[0].location.address.label
    } .resume()


override func viewDidLoad() {
  super.viewDidLoad()
  locationLabel.text = ("Your Current Location Is :" + addrs)
}

1 个答案:

答案 0 :(得分:2)

注意:始终仅在主线程上更新用户界面。使用下面的代码来解决您的问题。

DispatchQueue.main.async { [weak self] in
    addrs = result.response.view[0].result[0].location.address.label
    self?.locationLabel.text = ("Your Current Location Is :" + addrs)
}