2017-06-30 1 views
1

Ich habe ein Problem mit der Aktualisierung der Ansicht mit async API.
Wie Sie diese Situation verhindern und sicherstellen, dass das Etikett nicht nichts ist.
Es macht mich zum Label, um nichts zu zeigen.
Danke.
Async API mit rxSwift und Alamofire aufrufen, die Ansicht zeigt sich schneller als bekommen API Antwort

Update-Code:

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() 
} 

Sorry, verwende ich @Sandeep Bhandari Antwort, wird es ein weiteres Problem, über meine Navigation Titel machen.
Ich nehme mein Problem Video hier auf.

Problem Video here Thanks!!!

Antwort

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() 
    }) 

Dieses Ihr Problem

Grund lösen sollte: das Antwortanruf und viewDidAppear wird, noch bevor get erhält, ist ein asynchrones genannt. Daher erhalten einmal erhalten die Antwort Update UI

+0

Vergessen Sie nicht, UI-Updates auf Haupt-Thread setzen –

+0

Danke, aber ich bekomme ein anderes Problem. @Sandeep Bhandari –