Je suis en œuvre une application iOS et d'essayer de faire ce qui suit lors du téléchargement d'une photo à un serveur:ne peux pas comprendre comment gérer MBProgressHUD et l'expédition
- processus de téléchargement Démarrer avec Alamofire
- Afficher un progrès indicateur avec MBProgressHUD
- Lorsque le téléchargement est terminé, cacher l'indicateur de progression
- en fonction de la réponse du serveur, afficher un message (réussite ou échec) alors la vue rejeter
Et je ne suis pas en mesure de réaliser cela, en particulier sur le rejet de la vue après l'affichage du message de réponse pendant 2 secondes. Voici mon code. Comment procéderiez-vous s'il vous plaît? Merci.
class ShareViewController: UIViewController {
var progressHUD: MBProgressHUD! = nil
func sendToServer(image: UIImage, imageName: String) {
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(jpgImageData!, withName: "photos",fileName: fname, mimeType: mime)
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
},
to:url!)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
DispatchQueue.main.async(execute: {
self.progressHUD.show(animated: true)
self.progressHUD.progress = (Float(progress.fractionCompleted))
self.progressHUD.hide(animated: true, afterDelay: 3)
})
})
upload.responseJSON { response in
if response.response?.statusCode == 200{
if let result = response.result.value {
var message = String()
message = "200, OK"
self.progressHUD.label.text = message
self.progressHUD.show(animated: true)
self.progressHUD.hide(animated: true, afterDelay: 2)
DispatchQueue.main.async(execute: {
self.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil)
})
}
}
else{
var message = String()
message = "Not 200, NOK"
self.progressHUD.label.text = message
self.progressHUD.show(animated: true)
self.progressHUD.hide(animated: true, afterDelay: 2)
DispatchQueue.main.async(execute: {
self.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil)
})
}
}
case .failure(let encodingError):
print(encodingError)
var message = String()
message = "Failure, NOK"
self.progressHUD.label.text = message
self.progressHUD.show(animated: true)
self.progressHUD.hide(animated: true, afterDelay: 2)
DispatchQueue.main.async(execute: {
self.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil)
})
}
}
}
}