LoginSignup
0
0

More than 1 year has passed since last update.

RxSwiftデータバインディング

Last updated at Posted at 2022-07-12

はじめに

勉強がてら、RxSwiftでのデータバインディングのサンプルアプリを製作してみました。

限りなくシンプルな実装になっているので、ぱっと見でもコードの流れがわかりやすいかと思います。

アプリの機能は、TextFieldに入力した値が、リアルタイムでLabelに反映される、ただそれだけのアプリです。

コード全文載せておきます。

UIViewController
import UIKit
import RxSwift
import RxCocoa

class ViewModel {
    let username = BehaviorRelay<String>(value: "")
}

class ViewController: UIViewController {
    
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var textField: UITextField!
    
    let disposeBag = DisposeBag()
    var viewModel: ViewModel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupViewModel()
    }
    func setupViewModel() {
        viewModel = ViewModel()
        // MARK: ViewModelの変化をViewController(UI)に伝える
        viewModel.username
            .bind(to: label.rx.text)
            .disposed(by: disposeBag)
        
        // MARK: ViewModel(UI)の変化をViewModelに伝える
        textField.rx.text.orEmpty
            .bind(to: viewModel.username)
            .disposed(by: disposeBag)
    }
}

ちなみに、

orEmpty

では、TextFieldのtextの型をString?からString型へ変換しています。
これでStringの型としてバインディング出来ている訳です。

さいごに

非常に簡素なアプリですが、RxSwiftは覚えることが多すぎて、どうしたらいいのか解らずじまいになりがちなので、こうしてサンプルアプリを量産しながら、一つ一つ確実に理解を深めていければなと思います!!

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0