2017-12-19 8 views
0

信号を発しない:のViewControllerでRxSwift変数(動作対象が)私は、単純なビューモデル有する

struct ViewModel { 
    var someText = Variable<String>("") 

    func foo() -> Observable<String> { 
     return someText.asObservable() 
    } 
} 

をViewModelには、インスタンス変数であり、someTextFieldはIBOutletとのUITextFieldが正しく

var viewModel = ViewModel() 
@IBOutlet weak var someTextField: UITextField! 
に接続されています。

は、その後のViewControllerののviewDidLoad()で、私は物事を設定し、次の操作を行います

someTextField.rx.text.map { $0 ?? "" }.bind(to: viewModel.someText) 

let disposeBag = DisposeBag() 
let observable = viewMode.foo() 
observable.subscribe(onNext: { data in 
      print(data) 
     }, onError: { error in 
      print(error) 
     }, onCompleted: { 
      print ("complete") 
     }, onDisposed: { 
      print("disposed") 
     }).disposed(by: disposeBag) 

私はテキストフィールドに文字を入力するので、print()がこれらの文字を出力することを期待します。しかしprint()はデバッガで一度だけ呼び出されます(テキストフィールドが入力を受け取った後ではありません)

どうしたのですか?

答えて

1

disposeBagは文脈の外に保管し、someTextField.rx.text.map { $0 ?? "" }.bind(to: viewModel.someText)disposed(by: disposeBag)にする必要があります。

+0

あなたの答えは、100%正しいわけではありませんが、正しい答えを見つけることができます。 –

+2

あなたは彼の答えについて何が間違っていたか教えていただけますか?あなたの解決策は何でしたか? –

関連する問題