programing

UIAertController 텍스트 필드에서 입력 값을 가져오는 방법은 무엇입니까?

muds 2023. 7. 5. 21:04
반응형

UIAertController 텍스트 필드에서 입력 값을 가져오는 방법은 무엇입니까?

메시지와 입력으로 경보 컨트롤러를 만들고 입력에서 값을 얻으려고 합니다.입력 텍스트 필드를 만드는 방법에 대한 많은 좋은 튜토리얼을 찾았지만 경고에서 값을 가져올 수 없습니다.

Swift 3 이상 버전에 대해 업데이트됨:

//1. Create the alert controller.
let alert = UIAlertController(title: "Some Title", message: "Enter a text", preferredStyle: .alert)

//2. Add the text field. You can configure it however you need.
alert.addTextField { (textField) in
    textField.text = "Some default text"
}

// 3. Grab the value from the text field, and print it when the user clicks OK.
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
    let textField = alert.textFields![0] // Force unwrapping because we know it exists.
    print("Text field: \(textField.text)")
}))

// 4. Present the alert.
self.present(alert, animated: true, completion: nil)

스위프트 2.x

iOS에서 작업 알림을 원한다고 가정할 때:

//1. Create the alert controller.            
var alert = UIAlertController(title: "Some Title", message: "Enter a text", preferredStyle: .Alert)

//2. Add the text field. You can configure it however you need.
alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in
    textField.text = "Some default text."
})

//3. Grab the value from the text field, and print it when the user clicks OK. 
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { [weak alert] (action) -> Void in
    let textField = alert.textFields![0] as UITextField
    println("Text field: \(textField.text)")
}))

// 4. Present the alert.
self.presentViewController(alert, animated: true, completion: nil)

스위프트 5

당신은 당신의 편의를 위해 아래의 내선번호를 사용할 수 있습니다.

내부 사용ViewController:

showInputDialog(title: "Add number",
                subtitle: "Please enter the new number below.",
                actionTitle: "Add",
                cancelTitle: "Cancel",
                inputPlaceholder: "New number",
                inputKeyboardType: .numberPad, actionHandler:
                        { (input:String?) in
                            print("The new number is \(input ?? "")")
                        })

확장 코드:

extension UIViewController {
    func showInputDialog(title:String? = nil,
                         subtitle:String? = nil,
                         actionTitle:String? = "Add",
                         cancelTitle:String? = "Cancel",
                         inputPlaceholder:String? = nil,
                         inputKeyboardType:UIKeyboardType = UIKeyboardType.default,
                         cancelHandler: ((UIAlertAction) -> Swift.Void)? = nil,
                         actionHandler: ((_ text: String?) -> Void)? = nil) {
        
        let alert = UIAlertController(title: title, message: subtitle, preferredStyle: .alert)
        alert.addTextField { (textField:UITextField) in
            textField.placeholder = inputPlaceholder
            textField.keyboardType = inputKeyboardType
        }
        alert.addAction(UIAlertAction(title: actionTitle, style: .default, handler: { (action:UIAlertAction) in
            guard let textField =  alert.textFields?.first else {
                actionHandler?(nil)
                return
            }
            actionHandler?(textField.text)
        }))
        alert.addAction(UIAlertAction(title: cancelTitle, style: .cancel, handler: cancelHandler))
        
        self.present(alert, animated: true, completion: nil)
    }
}

Swift5 및 Xcode 10에서

저장 및 취소 작업을 사용하여 두 개의 텍스트 필드를 추가하고 텍스트 필드 텍스트 데이터 읽기

func alertWithTF() {
    //Step : 1
    let alert = UIAlertController(title: "Great Title", message: "Please input something", preferredStyle: UIAlertController.Style.alert )
    //Step : 2
    let save = UIAlertAction(title: "Save", style: .default) { (alertAction) in
        let textField = alert.textFields![0] as UITextField
        let textField2 = alert.textFields![1] as UITextField
        if textField.text != "" {
            //Read TextFields text data
            print(textField.text!)
            print("TF 1 : \(textField.text!)")
        } else {
            print("TF 1 is Empty...")
        }

        if textField2.text != "" {
            print(textField2.text!)
            print("TF 2 : \(textField2.text!)")
        } else {
            print("TF 2 is Empty...")
        }
    }

    //Step : 3
    //For first TF
    alert.addTextField { (textField) in
        textField.placeholder = "Enter your first name"
        textField.textColor = .red
    }
    //For second TF
    alert.addTextField { (textField) in
        textField.placeholder = "Enter your last name"
        textField.textColor = .blue
    }

    //Step : 4
    alert.addAction(save)
    //Cancel action
    let cancel = UIAlertAction(title: "Cancel", style: .default) { (alertAction) in }
    alert.addAction(cancel)
    //OR single line action
    //alert.addAction(UIAlertAction(title: "Cancel", style: .default) { (alertAction) in })

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

}

자세한 내용은 https://medium.com/ @chan.skk/text-field-with-text-field-in-bda7ac06026c를 참조하십시오.

빠른 버전: 5.+

새 만들기TextField현재 범위의 변수 및 alertTextField에 할당alert.addTextField완료 핸들러.사용하다textField의 내면의 가치UIAlertAction완료 핸들러.

@IBAction func addButtonPressed(_ sender: UIBarButtonItem) {
          //Variable to store alertTextField
            var textField = UITextField()
            
            let alert = UIAlertController(title: "Add new item", message: "", preferredStyle: .alert)
            alert.addTextField { alertTextField in
                alertTextField.placeholder = "Create new item"
                
                //Copy alertTextField in local variable to use in current block of code
                textField = alertTextField
            }
            
            let action = UIAlertAction(title: "Add item", style: .default) { action in
                //Prints the alertTextField's value
                print(textField.text!)
            }
            
            alert.addAction(action)
            present(alert, animated: true, completion: nil)
        }
let ac = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
ac.addTextField()

let submitAction = UIAlertAction(title: "Submit", style: .default) { [weak self, weak ac] action in
    guard let wordToget = ac?.textFields?[0].text else { return }
    //here you can do what you need like
    print(wordToget)
}

ac.addAction(submitAction)
present(ac, animated: true)

언급URL : https://stackoverflow.com/questions/26567413/how-to-get-input-value-from-a-uialertcontroller-text-field

반응형