あなたは、あなたのViewControllerでこの作業を行う。このようなものを持っています。私のプロジェクトでMBProgressHUDを使用しています。 は、最初に、あなたはこのライブラリの拡張機能を作成する必要があります。
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
}
}
}
}
次あなたのViewControllerクラスでActivityIndicatorオブジェクトを作成する必要があります。
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)
次は自分のシーケンスにtrackActivity()関数を使用します。
を
apiMethod
.trackActivity(indicator)
.subscribeNext { stringArray in
items.value = stringArray
}
.addDisposableTo(bag)
'viewDidLoad'で 'ProgressHUD'にバインドすると、それが表示されます。 'trackActivity'を呼び出す前に –
'MBProgressHUD'は 'trackActivity'が呼び出されたときにのみ表示を開始します。私はすべてのプロジェクトでそれを使用しています。 'trackActivity'を呼び出す前に 'MBProgressHUD'が表示されていれば、何か間違っているかもしれません。私のRxSwiftチュートリアルhttps://github.com/svyatoslav-reshetnikov/ReactiveAppを確認して、実装方法を確認することができます。 – Svyatoslav