在Swift中获取iOS警告框TextField的输入值


通常,我们使用UIAlertController来显示带有关闭操作按钮的警告框。但是UIAlertController 提供了更多灵活性来向警告框添加UITextFields。让我们看看一些不同用例的示例。

当您向UIAlertController添加文本字段时,您可以获取在文本字段中输入的值。也可以添加多个文本字段。

在这个例子中,我们将使用以下步骤来获取iOS文本字段的输入值。

基本设置

在此步骤中,您将向控制器的视图添加一个按钮对象,以便通过单击它来呈现警告控制器。这是基本设置代码:

示例

import UIKit
class TestController: UIViewController {
   private let clickButton = UIButton()
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
       
   private func initialSetup() {

      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "UIAlertController"

      // button customization
      clickButton.backgroundColor = .darkGray
      clickButton.setTitle("Show Alert", for: .normal)
      clickButton.setTitleColor(.white, for: .normal)
      clickButton.layer.cornerRadius = 8
      clickButton.addTarget(self, action: #selector(handleClickButtonTapped), for: .touchUpInside)

      // adding constraints to the button
      view.addSubview(clickButton)
      clickButton.translatesAutoresizingMaskIntoConstraints = false
      clickButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      clickButton.widthAnchor.constraint(equalToConstant: 250).isActive = true
      clickButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
      clickButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
   }
       
   @objc private func handleClickButtonTapped() {
   }
}

输出

在上面的代码中,我们添加了一个带有目标动作方法的按钮。在下一步中,我们将实现handleClickButtonTapped方法来显示警告。

显示基本警告

在此步骤中,我们将显示一个带有标题和消息的简单警告。此外,我们还将添加一些操作来关闭警告。

示例

@objc private func handleClickButtonTapped() {

   // creating an alert controller object
   let alertController = UIAlertController(title: "Login", message: "Are you sure that you want to login?", preferredStyle: .alert)

   // adding actions to alert
   alertController.addAction(UIAlertAction(title: "Yes", style: .default))
   alertController.addAction(UIAlertAction(title: "Not now", style: .default))

   // present the alert on the screen
   self.present(alertController, animated: true)
}

输出

输入电子邮件地址

在此步骤中,我们将添加一个文本字段来输入电子邮件地址并获取其值。代码如下:

示例

@objc private func handleClickButtonTapped() {

   // creating an alert controller object
   let alertController = UIAlertController(title: "Enter Email", message: "Please enter a valid email address.", preferredStyle: .alert)

   // adding a textField for an email address
   alertController.addTextField { textField in
   
      // configure the text field
      textField.placeholder = "Email Address"
      textField.keyboardType = .emailAddress
      textField.autocorrectionType = .no
   }
   // creating OK action
   let okAction = UIAlertAction(title: "OK", style: .default) { 
      action in guard let textField = alertController.textFields?.first,
      let text = textField.text else {
         print("No value has been entered in email address")
         return
      }

      print("Entered email address value: \(text)")
   }
   // creating a Cancel action
   let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
   // adding actions to alert
   alertController.addAction(okAction)
   alertController.addAction(cancelAction)
   // showing the alert
   present(alertController, animated: true, completion: nil)
}

输出

这是在控制台上打印的输出

Entered email address value: [email protected]

在这个例子中,我们创建了一个带有文本字段和两个操作(确定和取消)的警告控制器。当用户点击“确定”按钮时,将调用处理程序块,我们可以使用alertController.textFields?.first?.text访问文本字段的值。然后,我们使用文本的值来执行我们需要对输入执行的任何操作。

添加多个文本字段

在此步骤中,我们将向警告框添加两个文本字段。第一个文本字段用于姓名,第二个文本字段用于电子邮件地址。代码如下:

示例

@objc private func handleClickButtonTapped() {

   // creating an alert controller object
   let alertController = UIAlertController(title: "Enter Details", message: "Please enter your full name & a valid email address.", preferredStyle: .alert)

   // adding a textField for name
   alertController.addTextField { textField in
      textField.placeholder = "Full Name"
      textField.autocorrectionType = .no
      textField.autocapitalizationType = .words
   }

   // adding a textField for email address
   alertController.addTextField { textField in
      textField.placeholder = "Email Address"
      textField.keyboardType = .emailAddress
      textField.autocorrectionType = .no
   }
   
   // creating OK action
   let okAction = UIAlertAction(title: "OK", style: .default) { action in
      guard let nameTextField = alertController.textFields?[0],
      let emailTextField = alertController.textFields?[1],
      let name = nameTextField.text,
      let email = emailTextField.text else {
         return
      }

      print("Entered name: \(name) and email address: \(email)")
   }
   
   // creating Cancel action
   let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
   
   // adding actions to alert
   alertController.addAction(okAction)
   alertController.addAction(cancelAction)
   
   // showing the alert
   present(alertController, animated: true, completion: nil)
}

输出

这是在控制台上打印的输出

Entered name: Alex Murphy and email address: [email protected]

在这个例子中,我们的警告框中有两个文本字段,我们使用它们在textFields数组中的相应索引来访问它们的值。

结论

总而言之,使用Swift在iOS警告框中从TextField获取输入数据非常简单。还有其他方法可以调整输入,例如添加更多文本字段、启用安全文本输入或将其限制为仅数字。您可以使用UIAlertController的处理程序参数检索文本字段的值。您可以使用这些方法为您的iOS应用程序设计适应性和吸引人的用户界面。

更新于:2023年3月27日

2K+ 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告