Help us understand the problem. What is going on with this article?

【RxSwiftの勉強メモ】#2「ログインボタンで条件を満たしていたらボタンを活性化する」

この記事の目的

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文字以上入力されるとボタンの背景が赤く変化し活性化します。
画面収録 2020-11-29 22.06.00.gif

まとめ

比較的容易に実装ができたと思います。
まだまだRxSwiftを全貌は把握していませんが、便利なのかな〜
くらいはわかるようになりました!

shikanai1993
東京で普通の会社員をやっています。 趣味がiosアプリ開発です。 Twitter <https://twitter.com/shikanai_swift>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away