[英]Call Async Api using rxSwift and alamofire, the view show up more quickly than getting api response
我有关于使用异步Api更新View的问题。
如何防止这种情况并确保标签没有任何内容。
它使我的标签无所作为。
谢谢。
更新代码:
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 Bhandari答案,这将使我的导航标题出现另一个问题。
我在这里录制问题视频。
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()
})
这应该可以解决您的问题
原因:get是一个异步调用,甚至在get收到响应之前都会调用viewDidAppear。 因此,一旦获得接收响应更新UI
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.