출처 : https://stackoverflow.com/a/36839785
You may to use ActivityIndicator from RxSwift repo. I using MBProgressHUD in my project. At first you need to create extension for this library:
extension MBProgressHUD {
/**
Bindable sink for MBProgressHUD show/hide methods.
*/
public var rx_mbprogresshud_animating: AnyObserver<Bool> {
return AnyObserver { event in
MainScheduler.ensureExecutingOnScheduler()
switch (event) {
case .Next(let value):
if value {
let loadingNotification = MBProgressHUD.showHUDAddedTo(UIApplication.sharedApplication().keyWindow?.subviews.last, animated: true)
loadingNotification.mode = self.mode
loadingNotification.labelText = self.labelText
loadingNotification.dimBackground = self.dimBackground
} else {
MBProgressHUD.hideHUDForView(UIApplication.sharedApplication().keyWindow?.subviews.last, animated: true)
}
case .Error(let error):
let error = "Binding error to UI: \(error)"
#if DEBUG
rxFatalError(error)
#else
print(error)
#endif
case .Completed:
break
}
}
}
}
Next you need to create ActivityIndicator object in your ViewController class:
let progress = MBProgressHUD()
progress.mode = MBProgressHUDMode.Indeterminate
progress.labelText = "Loading..."
progress.dimBackground = true
let indicator = ActivityIndicator()
indicator.asObservable()
.bindTo(progress.rx_mbprogresshud_animating)
.addDisposableTo(bag)
Next just use trackActivity() function into your sequences:
apiMethod
.trackActivity(indicator)
.subscribeNext { stringArray in
items.value = stringArray
}
.addDisposableTo(bag)
'IOS > Rxswift' 카테고리의 다른 글
[ReactiveX][RxSwift]flatMap, flatMapFirst, flatMapLatest (0) | 2017.04.13 |
---|