我使用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()
}
}
答案 0 :(得分:0)
您的异步搜索看起来像confirmHostAddress()
?该函数需要有一个回调块,它(希望)将在后台线程上运行。在该回调中,使用dispatch_async()
将主要队列中的UI更改排入队列。
搜索按钮单击(在主队列上)触发搜索(在后台队列上),并搜索完成触发器(在主队列上)UI更新。