我从google places api中检索lat和long坐标,用于在tableView中显示信息。 tableView结果基于这些坐标。我正在将坐标解析到下面函数中的tableView,但是在检索协调之前正在推送TableViewController。如何延迟推送直到坐标数据通过?感谢。
func placeSelected(place: Place) {
println(place.description)
var lat = 0.0
var lng = 0.0
place.getDetails { details in
lat = details.latitude // Convenience accessor for latitude
lng = details.longitude // Convenience accessor for longitude
}
let locationData = self.storyboard?.instantiateViewControllerWithIdentifier("TableViewController") as TableViewController
locationData.searchLat = lat
locationData.searchLng = lng
self.navigationController?.pushViewController(locationData, animated: true)
}
答案 0 :(得分:1)
您可以从getDetails方法的完成闭包中实例化并推送TableViewController。
func placeSelected(place: Place) {
println(place.description)
place.getDetails { [weak self] details in
let lat = details.latitude // Convenience accessor for latitude
let lng = details.longitude // Convenience accessor for longitude
if let self = self, locationData = self.storyboard?.instantiateViewControllerWithIdentifier("TableViewController") as? TableViewController {
locationData.searchLat = lat
locationData.searchLng = lng
self.navigationController?.pushViewController(locationData, animated: true)
}
}
}
这假定在主线程上调用闭包。
您可能希望在getDetails方法运行时显示某种活动指示符。