我正在开发一个应用程序,允许用户通过UIMapKit更新他们的位置。视图显示正确,但是当我选择UI Button "Find“时,应用程序会冻结以下消息:
在__ObjC.MKLocalSearchRequest的InfoViewController.swift上键入元数据访问器。“
我的UIOutlet链接到我的按钮,但是我的问题似乎集中在下面的代码上:
var appDelegate: AppDelegate!
var latitude: Double = 0.00
var longitude: Double = 0.00
var addLocation = addLocationDelegate()
var indicator = Indicator()
@IBOutlet var locationText: UITextField!
@IBAction func findOTMButton(_ sender: Any) {
self.indicator.loadingView(true)
let localSearchRequest = MKLocalSearchRequest()
localSearchRequest.naturalLanguageQuery = locationText.text
let localSearch = MKLocalSearch(request: localSearchRequest)
localSearch.start { (localSearchResponse, error) -> Void in
if localSearchResponse == nil{
UdacityNetwork.sharedInstance().alertError(self, error: self.appDelegate.errorMessage.MapError)
self.indicator.loadingView(false)
return
}
let pointAnnotation = MKPointAnnotation()
pointAnnotation.title = self.locationText.text!
pointAnnotation.coordinate = CLLocationCoordinate2D(latitude: localSearchResponse!.boundingRegion.center.latitude, longitude: localSearchResponse!.boundingRegion.center.longitude)
self.latitude = localSearchResponse!.boundingRegion.center.latitude
self.longitude = localSearchResponse!.boundingRegion.center.longitude
let controller = self.storyboard!.instantiateViewController(withIdentifier: "LinkViewController") as! LinkViewController
controller.location = self.locationText.text!
controller.pointAnnotation = pointAnnotation
controller.latitude = self.latitude
controller.longitude = self.longitude
self.indicator.loadingView(false)
self.present(controller, animated: true, completion: nil)
}发布于 2018-05-24 05:56:35
您应该回到主线程更新UI。
localSearch.start { (localSearchResponse, error) -> Void in
DispatchQueue.main.async {
// Update the UI
....
}
}https://stackoverflow.com/questions/50494790
复制相似问题