如何在加载数据之前延迟解析这些必需的变量?

时间:2015-08-23 07:24:25

标签: ios swift google-places-api

我从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)

}

1 个答案:

答案 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方法运行时显示某种活动指示符。