Swift - 告警提示框(UIAlertController)的用法

自iOS8起,苹果就建议告警框使用UIAlertController来代替UIAlertView和UIActionSheel。下面总结了一些常见的用法( 本文代码都已更新至Swift3

1,简单的应用(同时按钮响应Handler使用闭包函数)
  
Swift - 告警提示框(UIAlertController)的用法_第1张图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import  UIKit
 
class  ViewController UIViewController  {
     override  func  viewDidLoad() {
         super .viewDidLoad()
     }
     
     override  func  viewDidAppear(_ animated:  Bool ){
         super .viewDidAppear(animated)
         
         let  alertController =  UIAlertController (title:  "系统提示" ,
                         message:  "您确定要离开hangge.com吗?" , preferredStyle: .alert)
         let  cancelAction =  UIAlertAction (title:  "取消" , style: .cancel, handler:  nil )
         let  okAction =  UIAlertAction (title:  "好的" , style: . default , handler: {
             action  in
             print ( "点击了确定" )
         })
         alertController.addAction(cancelAction)
         alertController.addAction(okAction)
         self .present(alertController, animated:  true , completion:  nil )
     }
     
     override  func  didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
}

2,除了弹出,还可以使用从底部向上滑出的样式
(注意:如果上拉菜单中有“取消”按钮的话,那么它永远都会出现在菜单的底部,不管添加的次序是如何)
 
Swift - 告警提示框(UIAlertController)的用法_第2张图片
1
2
3
4
5
6
7
8
9
let  alertController =  UIAlertController (title:  "保存或删除数据" , message:  "删除数据将不可恢复" ,
                                         preferredStyle: .actionSheet)
let  cancelAction =  UIAlertAction (title:  "取消" , style: .cancel, handler:  nil )
let  deleteAction =  UIAlertAction (title:  "删除" , style: .destructive, handler:  nil )
let  archiveAction =  UIAlertAction (title:  "保存" , style: . default , handler:  nil )
alertController.addAction(cancelAction)
alertController.addAction(deleteAction)
alertController.addAction(archiveAction)
self .present(alertController, animated:  true , completion:  nil )

3,按钮使用“告警”样式(文字颜色变红,用来来警示用户)
  
Swift - 告警提示框(UIAlertController)的用法_第3张图片
1
let  okAction =  UIAlertAction (title:  "好的" , style: .destructive, handler:  nil )

4,添加任意数量文本输入框(比如可以用来实现个登陆框)
  
Swift - 告警提示框(UIAlertController)的用法_第4张图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import  UIKit
 
class  ViewController UIViewController  {
     override  func  viewDidLoad() {
         super .viewDidLoad()
     }
     
     override  func  viewDidAppear(_ animated:  Bool ){
         super .viewDidAppear(animated)
         
         let  alertController =  UIAlertController (title:  "系统登录" ,
                             message:  "请输入用户名和密码" , preferredStyle: .alert)
         alertController.addTextField {
             (textField:  UITextField !) ->  Void  in
             textField.placeholder =  "用户名"
         }
         alertController.addTextField {
             (textField:  UITextField !) ->  Void  in
             textField.placeholder =  "密码"
             textField.isSecureTextEntry =  true
         }
         let  cancelAction =  UIAlertAction (title:  "取消" , style: .cancel, handler:  nil )
         let  okAction =  UIAlertAction (title:  "好的" , style: . default , handler: {
             action  in
             //也可以用下标的形式获取textField let login = alertController.textFields![0]
             let  login = alertController.textFields!.first!
             let  password = alertController.textFields!.last!
             print ( "用户名:\(login.text) 密码:\(password.text)" )
         })
         alertController.addAction(cancelAction)
         alertController.addAction(okAction)
         self .present(alertController, animated:  true , completion:  nil )
     }
     
     override  func  didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
}

5,使用代码移除提示框
1
self .presentedViewController?.dismiss(animated:  false , completion:  nil )

6,提示框弹出后,过段时间自动移除
下面样例弹出一个不带按钮的消息提示框,过个两秒钟提示框自动消失。
Swift - 告警提示框(UIAlertController)的用法_第5张图片
1
2
3
4
5
6
7
8
let  alertController =  UIAlertController (title:  "保存成功!" ,
                                         message:  nil , preferredStyle: .alert)
//显示提示框
self .present(alertController, animated:  true , completion:  nil )
//两秒钟后自动消失
DispatchQueue .main.asyncAfter(deadline:  DispatchTime .now() + 2) {
     self .presentedViewController?.dismiss(animated:  false , completion:  nil )
}

原文出自: www.hangge.com   转载请保留原文链接: http://www.hangge.com/blog/cache/detail_651.html

你可能感兴趣的:(IOS,苹果,ios,swift)