1. 程式人生 > >[iOS] Dialog Box with Input using UIAlertController in Swift

[iOS] Dialog Box with Input using UIAlertController in Swift

在 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!

資料來源: