我有一個提交按鈕,通過JSON
格式提交HTTP
驗證的電子郵件和密碼,但即使應用程序收到來自服務器的響應,指示器視圖也不會停止。iOS Swift 3 - 提交後無法停止UIActivityIndicatorView
@IBAction func signInButtonAction(_ sender: UIButton) {
let validated = validateEmailAddressTextField()
if validated {
let emailAddress = emailAddressTextField.text
let password = passwordField.text
let url:URL = URL(string: "http://localhost:8080/app/user/signin")!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.allHTTPHeaderFields = ["Content-Type": "application/json"]
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let user = User(emailAddress: emailAddress!, password: password!)
let requestJSON = careGiver.toJSON()
request.httpBody = requestJSON?.data(using: String.Encoding.utf8)
let indicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
indicator.center = view.center
view.addSubview(indicator)
indicator.startAnimating()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.0) {
let task = session.dataTask(with: request as URLRequest) {
(
data, response, error) in
guard let data = data, let _:URLResponse = response, error == nil else {
print("error")
return
}
let dataString = String(data: data, encoding: String.Encoding.utf8)
print(dataString)
indicator.stopAnimating()
}
task.resume()
}
}
}
當我點擊'提交'按鈕,我看到按鈕頂部的指示器視圖,但它不會停止並消失。
代碼有問題嗎?我使用的是Swift 3
和Xcode 8
。
謝謝。
謝謝。它的工作..爲什麼我需要調用內部異步塊? – user826323
Cuz與UI交互的所有內容都必須在主線程上運行。 –
@ user826323你能接受我的回答嗎? –