2017-06-30 25 views
1

我有關於使用異步API更新視圖的問題。
如何防止這種情況,並確保標籤不是什麼。
它讓我成爲沒有任何東西的標籤。
謝謝。
使用rxSwift和alamofire調用異步API,該視圖比獲取api響應顯示得更快

更新代碼:

var memberCount:String = "" 

func updateNavigation() { 

    navigationItem.titleView = setTitleWitImage(title: self.name + "(" + self.memberCount + ")", titleImage: #imageLiteral(resourceName: "titleImage")) 
} 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(true) 

    var parameters:[String:Any] = [String:Any]() 
    parameters["id"] = self.id 

    API.member.get(parameters,{ json in 

     guard json.isEmpty == false else { 

      print("nulllllllllllll") 
      return 
     } 

     let number:Int = json.count 
     self.memberCount = String(number) 
     print("*\(self.memberCount)") 

     DispatchQueue.main.async(execute: {() -> Void in 
      self.updateNavigation() 
     }) 
    }) 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    //updateNavigation() 
} 

對不起,我用@Sandeep班達裏的答案,它會讓我的導航標題另一個問題。
我在這裏記錄我的問題視頻。

Problem Video here Thanks!!!

回答

0
API.member.get(parameters,{ json in 

     guard json.isEmpty == false else { 

      print("nulllllllllllll") 
      return 
     } 

     let number:Int = json.count 
     self.memberCount = String(number) 
     self.updateNavigation() 
    }) 

這應該解決您的問題

原因:得到的是一個異步調用和viewDidAppear被稱爲GET接收響應,甚至之前。因此,一旦得到迴應更新UI

+0

不要忘記把UI更新在主線程 –

+0

謝謝你,但我得到另一個問題。 @Sandeep Bhandari –