我正在使用此代碼返回一個GoogleMarkerInfoWindow,並且它工作正常!swift 3在調用API後無法更新markerinfowindow內容API
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
let customInfoWindow = Bundle.main.loadNibNamed("customInfoWindown", owner: self, options: nil)?[0] as! CustomInfoWindowns
customInfoWindow.title = "This is title"
return customInfoWindow
}
但是當我更新調用的API後的標題,然後我不能更新這個標籤
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
let customInfoWindow = Bundle.main.loadNibNamed("customInfoWindown", owner: self, options: nil)?[0] as! CustomInfoWindowns
let id = marker.userData as? String
UserManager.sharedInstance.getUserInfo(id, onComplete: {(content, error) in
let userModel = UserModel.convertStringToUserModel(content!)
DispatchQueue.main.async {
customInfoWindow.title = userModel.name // this code didn't work
}
})
return customInfoWindow
}
我怎樣才能做到及時更新調用API後,此標籤?
謝謝!
嘗試更新一次你在主線程的UI,在迅速三是'DispatchQueue.main.async {customInfoWindow.title = userModel.name}' –
DispatchQueue.main.async {customInfoWindow.title = userModel.name} 我有一個嘗試,但它沒有工作。 –
'func mapView(_ mapView:GMSMapView,markerInfoWindow marker:GMSMarker) - > UIView? {return marker}' 此方法在點擊標記後由GoogleMap lib自動調用,所以在調用此方法之前我無法處理所有事情。 –