【Swift】アラート内にtextFieldを設置する
完成図
解説
・アラート内のtextFieldは複数設置可能
・各textFieldを識別するために、それぞれにtagを設定
・一旦、アラートのtextFieldを全て格納した配列を取得し、for文で1つずつ取り出していく
ソースコード
import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! @IBOutlet weak var label2: UILabel! //アラートビューコントローラー let alert = UIAlertController() @IBAction func alert(_ sender: Any) { //アラートコントローラー let alert = UIAlertController(title: "アラート", message: "テキストを入力せよ", preferredStyle: .alert) //OKボタンを生成 let okAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction) in //複数のtextFieldのテキストを格納 guard let textFields:[UITextField] = alert.textFields else {return} //textからテキストを取り出していく for textField in textFields { switch textField.tag { case 1: self.label.text = textField.text case 2: self.label2.text = textField.text default: break } } } //OKボタンを追加 alert.addAction(okAction) //Cancelボタンを生成 let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) //Cancelボタンを追加 alert.addAction(cancelAction) //TextFieldを2つ追加 alert.addTextField { (text:UITextField!) in text.placeholder = "好きなテキストを入力してね" //1つ目のtextFieldのタグ text.tag = 1 } alert.addTextField { (text:UITextField!) in text.placeholder = "好きなテキストを入力してね" //2つ目のtextFieldのタグ text.tag = 2 } //アラートを表示 present(alert, animated: true, completion: nil) } }