Alert Controller 中实现可编辑文本字输入框教程
作者:Arthur Knopper,原文链接,原文日期:2015-12-21
译者:pmst;校对:Cee;定稿:千叶知风
UIAlertController 类不仅用于呈现警告弹窗,还能够提供 Text Fields 来获取文本信息输入。本教程演示了从用户处获取账号和密码,并打印到终端中。此教程开发环境为 Xcode 7.2 以及 iOS 9。
打开X code,创建一个 Single View Application。输入项目名称:IOS9TextFieldAlertControllerTutorial,接着填写你独有的 Organization Name 以及 Organization Identifier。选择语言为 Swift 并确保设备为 iPhone 。
前往 Storyboard。从 Object Library(译者注:快捷键 Command + Option + Control + 3) 中拖拽一个按钮(UIButton)到主视图中。双击按钮设置 title 名为 「Log in」。此刻保持按钮为选中状态,按下 Ctrl 键,使用鼠标左键拖拽一条线到主视图上方,弹出黑色信息框,使用 Shift 键选中「Vertical Spacing to Top Layout Guide」和「Center Horizontally in Container」两个选项。
Storyboard 应该是这个样子的。
(译者注:也许你的界面呈现了黄色约束警告,你需要使用 Command + Option + = 快捷键来更新下。)
选中 Assistant Editor ,确保 ViewControllers.swift 可见。选中按钮使用 Ctrl + 左键拖拽方式创建如下 Action。
在 ViewController 类中实现 login 方法:
@IBAction func login(sender: AnyObject) {
// 1.
var usernameTextField: UITextField?
var passwordTextField: UITextField?
// 2.
let alertController = UIAlertController(
title: "Log in",
message: "Please enter your credentials",
preferredStyle: UIAlertControllerStyle.Alert)
// 3.
let loginAction = UIAlertAction(
title: "Log in", style: UIAlertActionStyle.Default) {
(action) -> Void in
if let username = usernameTextField?.text {
print(" Username = \(username)")
} else {
print("No Username entered")
}
if let password = passwordTextField?.text {
print("Password = \(password)")
} else {
print("No password entered")
}
}
// 4.
alertController.addTextFieldWithConfigurationHandler {
(txtUsername) -> Void in
usernameTextField = txtUsername
usernameTextField!.placeholder = "<Your username here>"
}
alertController.addTextFieldWithConfigurationHandler {
(txtPassword) -> Void in
passwordTextField = txtPassword
passwordTextField!.secureTextEntry = true
passwordTextField!.placeholder = "<Your password here>"
}
// 5.
alertController.addAction(loginAction)
self.presentViewController(alertController, animated: true, completion: nil)
}
- 创建两个可选类型的 UITextField 变量用于警告弹窗。
- 创建一个 Alert 样式的 AlertController。
- 创建一个 Alert Action,闭包体中执行如下行为:将 textField 输入的信息打印到终端中。
- addTextFieldWithConfigurationHandler 方法用于添加文本输入框(text input fields),闭包接收 Text Filed 作为参数变量。
- 将登录动作添加到 AlertController 中,同时呈现该控制器。
构建并运行该工程,点击 Login 按钮,填充 AlertController 中的 username 和 password 字段。输入内容随之打印到终端中。
你可以前往 ioscreator 的 GitHub 仓库下载 IOS9TextFieldAlertControllerTutorial 源代码。
本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。