在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: test@gmail.com
在这个例子中,我们创建了一个带有文本字段和两个操作(确定和取消)的警告控制器。当用户点击“确定”按钮时,将调用处理程序块,我们可以使用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: alexmurphy@gmail.com
在这个例子中,我们的警告框中有两个文本字段,我们使用它们在textFields数组中的相应索引来访问它们的值。
结论
总而言之,使用Swift在iOS警告框中从TextField获取输入数据非常简单。还有其他方法可以调整输入,例如添加更多文本字段、启用安全文本输入或将其限制为仅数字。您可以使用UIAlertController的处理程序参数检索文本字段的值。您可以使用这些方法为您的iOS应用程序设计适应性和吸引人的用户界面。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP