1. 对话框视图UIAlertView的使用
1.1 创建带有一个“取消”按钮的对话框视图
//对话框视图AlertView的使用:默认样式
func showAlertViewStyle1() {
var alertView = UIAlertView(title: "标题", message: "这个是UIAlertView的默认样式", delegate: self, cancelButtonTitle: "取消")
alertView.show()
}
备注
:在swift中,alertView的初始化只允许创建带有一个“取消”按钮的对话框视图
1.2 实现带有“取消”和“好的”按钮的对话框视图
//对话框视图AlertView的使用:自定义样式
func showAlertViewStyle2() {
var alertView = UIAlertView()
alertView.delegate = self
alertView.title = "标题"
alertView.message = "这个是UIAlertView的默认样式"
//alertView.alertViewStyle = .default
alertView.addButton(withTitle: "取消")
alertView.addButton(withTitle: "好的")
alertView.show()
}
备注
:可通过更改UIAlertView的alertViewStyle属性来实现输入文字、密码甚至登录框的效果。
-
默认视图:alertViewStyle为default
-
文本框视图:alertViewStyle为plainTextInput
-
密码框视图:alertViewStyle为alertViewStyle为secureTextInput
说明
:UIAlertViewDelegate协议拥有响应对话框视图的按钮动作的回调方法。还有当文本框内容改变时,调用alertViewShouldEnableOtherButton:方法可以让按钮动态地可用或者不可用。
2. 对话框视图控制器UIAlertController的使用
//对话框视图控制器AlertController的使用:对话框样式和上拉菜单样式
func showAlertControllerStyle1() {
//1.对话框样式还是上拉菜单样式
var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.alert)
//var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.actionSheet)
//2.创建动作按钮并将它们添加到控制器上:通过UIAlertActionStyle来设置三种动作样式:常规(default)、取消(cancel)以及警示(destruective)
var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default, handler: nil)
//var resetAction = UIAlertAction(title: "重置", style: UIAlertAction.Style.destructive, handler: nil)
var cancelAction = UIAlertAction(title: "取消", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(okAction)
//alertController.addAction(resetAction)
alertController.addAction(cancelAction)
//3.显示对话框视图控制器
self.present(alertController, animated: true, completion: nil)
}
备注
:按钮显示的次序取决于它们添加到对话框控制器上的次序,但并未成功。
3. UIAlertController替代UIAlertView并实现UIAlertView的4种视图效果
注意
:使用UIAlertView只能在默认视图、文本框视图、密码框视图、登录和密码输入框视图中选择;但UIAlertController的使用更灵活,不必拘泥于内置样式,我们可向对话框中添加任意数目的UITextField对象,并可使用所有的UITextField特性。苹果官方现在并不提倡在iOS 8中使用UIAlertView,取而代之的是UIAlertController。
- 默认视图
func showAlertControllerStyle2() {
var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.alert)
var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default) {
(action: UIAlertAction!) -> Void in
print("确认按钮点击事件")
}
var cancelAction = UIAlertAction(title: "取消", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
- 文本框视图
func showAlertControllerStyle2() {
var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.alert)
alertController.addTextField {
(textField: UITextField!) -> Void in
textField.placeholder = "请输入"
}
var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default) {
(action: UIAlertAction!) -> Void in
print("确认按钮点击事件")
}
var cancelAction = UIAlertAction(title: "取消", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
- 密码框视图
func showAlertControllerStyle2() {
var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.alert)
alertController.addTextField {
(textField: UITextField!) -> Void in
textField.placeholder = "请输入密码"
textField.isSecureTextEntry = true
}
var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default) {
(action: UIAlertAction!) -> Void in
print("确认按钮点击事件")
}
var cancelAction = UIAlertAction(title: "取消", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
- 登录和密码输入框视图
func showAlertControllerStyle2() {
var alertController = UIAlertController(title: "标题", message: "这个是UIAlertController的默认样式", preferredStyle: UIAlertController.Style.alert)
alertController.addTextField {
(textField: UITextField!) -> Void in
textField.placeholder = "登录"
}
alertController.addTextField {
(textField: UITextField!) -> Void in
textField.placeholder = "密码"
textField.isSecureTextEntry = true
}
//var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default, handler: nil)
var okAction = UIAlertAction(title: "确定", style: UIAlertAction.Style.default) {
(action: UIAlertAction!) -> Void in
print("确认按钮点击事件")
var login = alertController.textFields?.first as! UITextField
var password = alertController.textFields?.last as! UITextField
}
var cancelAction = UIAlertAction(title: "取消", style: UIAlertAction.Style.cancel, handler: nil)
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}