LoginSignup
0
2

More than 3 years have passed since last update.

テキストが入力されたらSaveボタンを有効にする方法(Swift)

Last updated at Posted at 2021-03-26

現在オリジナルアプリのスケジュール機能を実装するために、基礎としてメモアプリを作成しています

※この記事ではセーブボタンの配置などについては触れません

完成形

空欄だとSaveボタンが無効になり

スクリーンショット 2017-12-01 0.09.34.png

文字を入力すると有効になります
スクリーンショット 2017-12-01 0.09.34.png

目次

Saveボタンを無効にする方法

まずは、Saveボタンを無効にします

記述する場所はoverride func viewDidLoad()の部分です

override func viewDidLoad()の部分にself.saveButton.isEnabled = falseを追記します

ViewController.swift
override func viewDidLoad() {
    super.viewDidLoad()
    self.saveButton.isEnabled = false
}

saveButtonに対してisEnabledで、ボタンを有効か無効にすることができます、なので今回はfalseにして無効にします

テキストフィールドに入力された値を検出する

このままではセーブボタンが無効のままなのでテキストフィールドに入力された場合、ボタンを有効にします
そのために、テキストフィールドに入力された値を検出する方法を解説します。

まず、Main.Storyboardにあるテキストフィールドをコントロールキーを押しながらドラックアンドドロップをし、紐付けます。

ViewController.swift
    override func viewDidLoad() {
        super.viewDidLoad()
        self.saveButton.isEnabled = false
    }
    _____________________
    //↑にドラックアンドドロップ

スクリーンショット 2017-12-01 0.09.34.png


ドラックアンドドロップをすると下のようなものが出てきます

スクリーンショット 2017-12-01 0.09.34.png

それぞれ

Connection(接続タイプ)Action

Name(プロパティ名)memoTextFieldChanged

Event(イベント)Editing Changed

にします。


次に先ほど入力したmemoTextFieldChangedメソッドの処理を記述します

ViewController.swift
1    override func viewDidLoad() {
2        super.viewDidLoad()
3        self.saveButton.isEnabled = false
4    }
5    @IBAction func memoTextFieldChanged(_ sender: Any) {
6        let memo = self.memoTextField.text ?? ""
7        self.saveButton.isEnabled = !memo.isEmpty
8    }

繰り返しになりますが、7行目のisEnabledがボタンを有効、無効にします。

6行目では、テキストフィールドnil)か判断します。

7行目のisEmptyテキストフィールドnilの時はfalse
nilではない時はtrueと判別しsaveButtonを有効にできます。

※memoの横に!がないとtrue、falseが逆になってしまいます。

0
2
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
2