Je commence par MVVM afin de bien séparer le code logique de la vue. Mais j'ai un peu d'inquiétude quant à l'endroit où mettre le code lié de progressHUD en appuyant sur un bouton qui fait une demande.Comment montrer/cacher le progressHUD, avec MVVM et RxSwift dans swift
Avant, je l'habitude de le faire:
//Before
@IBAction func startRequestTapped() {
SVProgressHUD.show()
self.apiClient.requestObservable().subscribe(onError: { (error) in
SVProgressHUD.hide()
}, onCompleted: {
SVProgressHUD.hide()
})
}
Mais quand je l'utilise MVVM, je fais comme ça:
//In the viewModel
public var validateButtonDidTap = PublishSubject<Void>()
init() {
validateButtonDidTap.flatMap { (_)
return self.apiClient.requestObservable()
}
}
// In the viewController
viewDidLoad() {
let tap = self.validateButton.rx.tap
tap.bindTo(self.viewModel.validateButtonDidTap)
}
Et parmi cela, je ne sais pas où mettre la le hide ou le show de ProgressHUD.
Merci, Je n'ai pas pensé à ajouter une extension réactive à une classe existante – user3620372
@Xfreire pouvez-vous expliquer quel est le sens de l'extension? –