#この記事の目的
RxSwiftの使い方を学んでいくために簡単なサンプルを作成し記録する。
後から見直して頑張ります。
今回は
@r_chibaさんの
RxSwift入門(ハンズオン)
(https://qiita.com/r_chiba/items/5618a3dd96618222cca8#rx%E5%81%B4%E5%85%A8%E4%BD%93%E5%83%8F)
を参考にさせていただきました。(よりシンプルに、とりあえず動くものを作ろうという方針でコードを書きました。)
↓にサンプルコードを示します。
#サンプル
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var mailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var loginButton: UIButton!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
mailTextField.rx.text.subscribe { (event) in
self.changeLoginEnabled()
}.disposed(by: disposeBag)
passwordTextField.rx.text.subscribe { (event) in
self.changeLoginEnabled()
}.disposed(by: disposeBag)
}
private func changeLoginEnabled() {
if mailTextField.text!.count > 0 && passwordTextField.text!.count > 0 {
print("ボタン活性!")
// ボタンの活性状態
loginButton.isEnabled = true
loginButton.backgroundColor = UIColor.red
} else {
print("ボタン非活性!")
// ボタンの活性状態
loginButton.isEnabled = false
// ボタンの背景色
loginButton.layer.backgroundColor = UIColor.secondarySystemBackground.cgColor
}
}
}
#結果
以下のように「mail」と「password」両方のテキストフィールドに文字が
1文字以上入力されるとボタンの背景が赤く変化し活性化します。
#まとめ
比較的容易に実装ができたと思います。
まだまだRxSwiftを全貌は把握していませんが、便利なのかな〜
くらいはわかるようになりました!