MVVM アーキテクチャで初めて RAC を使用して、Reactive Cocoa を使用してボタンのような UIElement のクリックを検出しようとしています。
ViewController のボタンに rac_command を設定しました。
addContactBtn.rac_command = viewModel.addContact
私のViewModelは次のことを行います:
func init(){
self.addContact = RACCommand() {
(any:AnyObject!) -> RACSignal in
return RACSignal.createSignal({
(subscriber: RACSubscriber!) -> RACDisposable! in
print("creating viewModel")
let viewModel = ContactAddViewModel(services: self.services)
self.services.pushViewModel(viewModel)
return RACDisposable(block: {
})
})
}
}
ただし、コマンドは1回だけ実行され、View Controllerをポップして元のviewControllerに戻ると、ボタンは無効な状態になります。ボタンのクリックを何度でも検出するにはどうすればよいですか?