首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS Swift MKLocalSearchRequest

iOS Swift MKLocalSearchRequest
EN

Stack Overflow用户
提问于 2018-05-23 18:06:26
回答 1查看 461关注 0票数 0

我正在开发一个应用程序,允许用户通过UIMapKit更新他们的位置。视图显示正确,但是当我选择UI Button "Find“时,应用程序会冻结以下消息:

在__ObjC.MKLocalSearchRequest的InfoViewController.swift上键入元数据访问器。“

我的UIOutlet链接到我的按钮,但是我的问题似乎集中在下面的代码上:

代码语言:javascript
复制
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)
    }
EN

回答 1

Stack Overflow用户

发布于 2018-05-24 05:56:35

您应该回到主线程更新UI。

代码语言:javascript
复制
localSearch.start { (localSearchResponse, error) -> Void in
        DispatchQueue.main.async {
            // Update the UI
            ....
        }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50494790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档