[iOS] Dialog Box with Input using UIAlertController in Swift

Posted in :

在 dialog 裡增加 文字輸入框的範例:

基本款:

        //textの表示はalertのみ。ActionSheetだとtextfiledを表示させようとすると
        //落ちます。
        let alert:UIAlertController = UIAlertController(title:"action",
            message: "alertView",
            preferredStyle: UIAlertControllerStyle.alert)

        let cancelAction:UIAlertAction = UIAlertAction(title: "Cancel",
            style: UIAlertActionStyle.cancel,
            handler:{
            (action:UIAlertAction!) -> Void in
                print("Cancel")
        })
        let defaultAction:UIAlertAction = UIAlertAction(title: "OK",
            style: UIAlertActionStyle.default,
            handler:{
            (action:UIAlertAction!) -> Void in
                print("OK")
        })
        alert.addAction(cancelAction)
        alert.addAction(defaultAction)

        //textfiledの追加
        alert.addTextFieldWithConfigurationHandler({(text:UITextField!) -> Void in
        })
        //実行した分textfiledを追加される。
        alert.addTextFieldWithConfigurationHandler({(text:UITextField!) -> Void in
        })
        present(alert, animated: true, completion: nil)

進階款:

let alert:UIAlertController = UIAlertController(title:"action",
 message: "alertView",
 preferredStyle: UIAlertControllerStyle.alert)

let cancelAction:UIAlertAction = UIAlertAction(title: "Cancel",
 style: UIAlertActionStyle.cancel,
 handler:{
 (action:UIAlertAction!) -> Void in
 print("Cancel")
})
let defaultAction:UIAlertAction = UIAlertAction(title: "OK",
 style: UIAlertActionStyle.default,
 handler:{
 (action:UIAlertAction!) -> Void in
 print("OK")
})
alert.addAction(cancelAction)
alert.addAction(defaultAction)

alert.addTextField(configurationHandler: {(text:UITextField!) -> Void in
 text.placeholder = "first textField"
 let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
 label.text = "ID"
 text.leftView = label
 text.leftViewMode = UITextFieldViewMode.always
})
alert.addTextField(configurationHandler: {(text:UITextField!) -> Void in
 text.placeholder = "second textField"
 let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
 label.text = "PASS"
 text.leftView = label
 text.leftViewMode = UITextFieldViewMode.always
})

present(alert, animated: true, completion: nil)


存取輸的Text

You can access the textfield with:

let textField = self.alert.textFields![0]

Then to change the placeholder text:

textField.placeholder = "Foo!"

And the keyboard type:

textField.keyboardType = ...

value 是:

textField.text!

 

資料來源:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *