swift之对话框-基础使用

1. 对话框视图UIAlertView的使用

1.1 创建带有一个“取消”按钮的对话框视图

//对话框视图AlertView的使用:默认样式
func showAlertViewStyle1() {
        var alertView = UIAlertView(title: "标题", message: "这个是UIAlertView的默认样式", delegate: self, cancelButtonTitle: "取消")
        alertView.show()
    }

带有一个“取消”按钮的对话框视图.png

备注:在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属性.png
  • 默认视图:alertViewStyle为default


    默认视图.png
  • 文本框视图:alertViewStyle为plainTextInput


    文本框视图.png
  • 密码框视图:alertViewStyle为alertViewStyle为secureTextInput


    密码框视图.png
登录和密码输入框视图.png

说明: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)
        
    }

备注:按钮显示的次序取决于它们添加到对话框控制器上的次序,但并未成功。

对话框样式-1个动作按钮.png

对话框样式-2个动作按钮.png

对话框样式-3个动作按钮.png

上拉菜单样式-1个动作按钮.png

上拉菜单样式-2个动作按钮.png

上拉菜单样式-3个动作按钮.png

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)
    }
默认视图.png
  • 文本框视图
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)
    }
文本框视图.png
  • 密码框视图
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)
    }
密码框视图.png
  • 登录和密码输入框视图
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)
    }
登录和密码输入框视图.png

你可能感兴趣的:(swift之对话框-基础使用)