2017-06-30 3 views
1

View with async Apiを更新する際に問題があります。
このような状況を回避し、ラベルが何もないことを確認する方法。
これは私に何も表示されないラベルになります。
ありがとうございます。
rxSwiftとalamofireを使用してAsync 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 –

関連する問題