如何知道何时使用 MapKit 完成异步搜索



我正在使用mapkit允许用户搜索地址。 按下另一个按钮(goButton(将要求他们确认使用搜索结果填充的格式化地址,如果用户输入文本但在选择goButton之前没有实际搜索地址,还将发送命令在幕后进行搜索。 我的问题是,由于搜索是异步完成的,因此调用确认函数的时间太快。有没有办法知道搜索何时完成? 我尝试在搜索栏搜索按钮单击的末尾放置一个布尔值,然后在调用 confirmHostAddress 之前放置一个 while 循环,该地址检查了布尔值,但它没有检测到更改。 感谢您的帮助。

@IBAction func goButton(sender: UIButton) {
    //check and see if there is an address, if not, do search behind the scenes
    if (myAddress == nil)
    {
        if (mapSearch.text != "")
        {
            self.searchBarSearchButtonClicked(self.mapSearch)
            confirmHostAddress()
        }
        else
        {
            alertTextNeeded()
        }
    }
    else
    {
        confirmHostAddress()
    }
}

看起来您的异步搜索在confirmHostAddress()?该函数需要有一个回调块,该回调块(希望(将在后台线程上运行。在该回调中,使用 dispatch_async()将所需的 UI 更改排队到主队列中。

搜索按钮单击(在主队列上(触发搜索(在后台队列上(

和搜索完成触发器(在主队列上(UI 更新。

最新更新