ポップアップでテキスト入力を受取る方法

ユーザーからちょっとした文字入力を受け取りたい場合などは、いちいち画面遷移して入力フォームを表示するのも大げさなことが多いものです。

ここでは簡単なポップアップで文字を受け取る方法を紹介します。

今、ボタンとラベルが配置してあります。

ボタンをタップすると、ポップアップが表示されます。このときに、ラベルの文字がセットされて表示されます。

文字を入力して・・・

OK をタップすると、元の画面のラベルに入力した文字が表示される、という流れになります。

この場合、ポップアップを表示するためにはアラートを表示する UIAlertController を利用します。

UIAlertController には必要に応じて、ボタンなどのアクションや、テキストフィールド (UITextField) が追加できるようになっています。

これを利用すると、次のような簡単なコードで上記の動作を実現することができます。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var label1: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func enterTapped(_ sender: Any) {
        var alertTextField: UITextField?

        let alert = UIAlertController(
            title: "Edit Name",
            message: "Enter new name",
            preferredStyle: UIAlertController.Style.alert)
        alert.addTextField(
            configurationHandler: {(textField: UITextField!) in
                alertTextField = textField
                textField.text = self.label1.text
                // textField.placeholder = "Mike"
                // textField.isSecureTextEntry = true
        })
        alert.addAction(
            UIAlertAction(
                title: "Cancel",
                style: UIAlertAction.Style.cancel,
                handler: nil))
        alert.addAction(
            UIAlertAction(
                title: "OK",
                style: UIAlertAction.Style.default) { _ in
                if let text = alertTextField?.text {
                    self.label1.text = text
                }
            }
        )

        self.present(alert, animated: true, completion: nil)
    }

}

なお、コード内ではコメントアウトしていますが、パスワードを受け取るなら isSecureTextEntry プロパティを true にセットすると、 隠し文字になるなど、カスタマイズが可能です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Swift による iOS 開発入門