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

时间:2016-02-15 12:23:15

标签: ios swift mapkit

我使用mapkit来允许用户搜索地址。按下另一个按钮(goButton)将要求他们确认使用搜索结果填充的格式化地址,如果用户输入文本但在选择goButton之前没有实际搜索地址,也会发送命令进行后台搜索。我的问题是因为搜索是异步完成的,所以很快就会调用确认函数。 搜索完成时有什么方法可以告诉我吗?我尝试在searchBarSearchButtonClicked和while循环结束时放一个bool,然后调用confirmHostAddress来检查bool的值,但它没有检测到更改。谢谢你的帮助。

@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()
    }
}

1 个答案:

答案 0 :(得分:0)

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

搜索按钮单击(在主队列上)触发搜索(在后台队列上),并搜索完成触发器(在主队列上)UI更新。