最近 ReactiveCocoa を使いまくってます。そのなかで調べた Signal の使い方イディオムのメモです。
RACCommand で検索処理とかしてるときに、ローディング画面やインジケータを表示したいということがあると思います。そういうときに使える Signal のイディオムです。コードは Swift で書いています。
MVVM で viewModel が searchCommand を実装しているとします。また、ローディングインジケータの表示には MBProgressHUD を使っているとします。
MyViewController#viewDidLoad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
searchButton.rac_command = viewModel.searchCommand
searchButton.rac_command.executing
.subscribeNext({ [weak self] (executing) in
if let weakSelf = self {
if executing as Bool {
MBProgressHUD.showHUDAddedTo(weakSelf.view, animated: true)
} else {
MBProgressHUD.hideHUDForView(weakSelf.view, animated: true)
}
}
})
searchButton.rac_command.errors
.subscribeNext({ (error) in
// エラー時のメッセージ表示処理
println(error.localizedDescription)
})
|
executing
Signal はこういう風につかうんですね。