例えば
画面1 texField ×2 画面遷移ボタン ×1
画面2 ラベル ×1
があって
画面1のtextFieldの文字を、画面2のラベルに表示したい場合、
textFieldの文字はどの様に、画面2へ渡せばいいですか
又渡すのは画面2のviewでいいのでしょうか?
BehaviorRelay<String>(value: "") などで良いのでしょか?
現在のコード
swift
1画面1 view 2 3class ViewController1: UIViewController { 4 5 @IBOutlet weak var textField1: UITextField! 6 @IBOutlet weak var textField12: UITextField! 7 @IBOutlet weak var button: UIButton! 8 9 override func viewDidDisappear(_ animated: Bool) { 10 super.viewDidDisappear(animated) 11 12 bindTextField(textField: textField1, text: viewModel.textField1Relay) 13 bindTextField(textField: textField2, text: viewModel.textField2Relay) 14 15 button.rx.tap 16 .bind(to: viewModel.onRegisterButtonClick) 17 .disposed(by: disposeBag) 18 } 19 20 func bindTextField(textField: UITextField, text: BehaviorRelay<String>) { 21 textField.rx.text.orEmpty 22 .map{( $0.deleteSpace())} //スペースを削除 23 .bind(to: text) 24 .disposed(by: disposeBag) 25 } 26 27 func nextVc() { 28 29 viewModel.flag? 30 .filter{ $0 } 31 .map { _ in () } 32 .subscribe(onNext: { _ in 33 self.navigationController?.pushViewController(vc2) 34 }) 35 .disposed(by: self.disposeBag) 36 37 } 38 39} 40
swift
1画面1 viewModel 2 3class ViewModel1 { 4 5 let textField1Relay = BehaviorRelay<String>(value: "") 6 let textField2Relay = BehaviorRelay<String>(value: "") 7 var flag: Observable<Bool>? 8 9 //textFieldの文字数チェック 10 var isvValid: Observable<Bool> { 11 get { 12 Observable 13 .combineLatest(textField1Relay.asObservable(), 14 textField2Relay.asObservable()) 15 .map { tx1, tx2 in 16 return (tx1.count > 0 && tx1.count < 13 ) && ( tx2.count > 0 && tx2.count < 13) 17 } 18 } 19 20 init() { 21 22 flag = onRegisterButtonClick 23 .withLatestFrom(self.isvValid) 24 .asObservable() 25 } 26 27} 28
回答1件
あなたの回答
tips
プレビュー