小编use*_*372的帖子

如何使用MVVM和RxSwift快速显示/隐藏progressHUD

我从MVVM开始,以便将逻辑代码从视图中分离出来.但我有点担心在点击发出请求的按钮时将progressHUD相关代码放在哪里.

之前,我曾经这样做过:

//Before 
@IBAction func startRequestTapped() {
   SVProgressHUD.show()
    self.apiClient.requestObservable().subscribe(onError: { (error) in
        SVProgressHUD.hide()                    
    }, onCompleted: { 
        SVProgressHUD.hide()                                        
    })
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用mvvm时,我确实喜欢这样:

//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)
}
Run Code Online (Sandbox Code Playgroud)

其中,我不知道将ProgressHUD隐藏或显示放在哪里.

mvvm ios svprogresshud swift rx-swift

5
推荐指数
2
解决办法
4310
查看次数

标签 统计

ios ×1

mvvm ×1

rx-swift ×1

svprogresshud ×1

swift ×1