2017-01-07 57 views
1

我正在使用此代碼返回一個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後,此標籤?

謝謝!

+0

嘗試更新一次你在主線程的UI,在迅速三是'DispatchQueue.main.async {customInfoWindow.title = userModel.name}' –

+0

DispatchQueue.main.async {customInfoWindow.title = userModel.name} 我有一個嘗試,但它沒有工作。 –

+0

'func mapView(_ mapView:GMSMapView,markerInfoWindow marker:GMSMarker) - > UIView? {return marker}' 此方法在點擊標記後由GoogleMap lib自動調用,所以在調用此方法之前我無法處理所有事情。 –

回答

0

因爲使用async嘗試重新加載地圖視圖

self.map.reloadInputViews() 
+0

對我不起作用 –

+0

您是否在您的'Alamofire'塊中添加了DispatchQueue.main.async {self.map.reloadInputViews()customInfoWindow.title = userModel.name}? – Nour

+0

是的,總是在UI主線程上運行 –

相關問題