在IOS8中,苹果推出了UIAlertController替代Alert Views和Action Sheets,并且苹果不推荐在IOS8之后再使用Alert Views和Action Sheets。
使用步骤:
- 初始化UIAlertController,同时制定样式是Alert还是ActionSheet
- 创建一个动作
- 把动作添加到控制器中
- 推出UIAlertController
代码示范,创建Alert对话框:
// 初始化UIAlertController控制器
let alertVC = UIAlertController(title: "Welcome to my first App", message: "Hello World", preferredStyle: UIAlertControllerStyle.Alert)
// 创建动作
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
// 添加动作
alertVC.addAction(action)
// 推出UIAlertController控制器
presentViewController(alertVC, animated: true, completion: nil)
preferredStyle属性取值:
- Alert
- ActionSheet
UIAlertAction中Style属性取值:
- Default 默认样式,对话框中OK字体显示蓝色
- Cancel 对话框中OK字体显示蓝色
- Destructive 对话框中OK字体显示红色
当按钮被点击触发响应的时候,可以在handler闭包中添加响应内容:
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (action) -> Void in
print("我被点击了!!")
}
一个UIAlertController可以添加多个Action,我们可以通过actions数组属性获取到UIAlertController中的所有动作,actions是一个get属性。
action中有一个属性enable可以控制此按钮是否可以点击,title属性可以设置按钮的显示标题
UIAlertController除了可以添加响应动作,还可以添加textField文本输入框:
alertVC.addTextFieldWithConfigurationHandler { (textField) -> Void in
textField.placeholder = "Login"
}
alertVC.addTextFieldWithConfigurationHandler { (textField) -> Void in
textField.placeholder = "Password"
}
效果如图:
跟actions数组可以获取action一样,textfields数组可以获取控制器中的textfield,这个数组返回的是一个可选值。