iOS

前言

	NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertController : UIViewController
	@available(iOS 8.0, *)		 public class UIAlertController : UIViewController

1、alertController 的创建

  • Objective-C

    	// 1. 创建时不添加按钮
    
    		// 实例化 alertController 对象
    		UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" 
    		                                                                         message:@"真的要关闭 !" 
    		                                                                  preferredStyle:UIAlertControllerStyleAlert];
    
    		// 显示,模态视图显示
    		[self presentViewController:alertController animated:YES completion:nil];
    
    	// 2. 创建时添加按钮等信息
    
    		// 实例化 UIAlertController 对象
    		UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" 
    		                                                                         message:@"真的要关闭 !" 
    		                                                                  preferredStyle:UIAlertControllerStyleAlert];
          
          	// 创建按钮
        	UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" 
        	                                                       style:UIAlertActionStyleCancel 
        	                                                     handler:nil];
    
        	UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" 
        	                                                   style:UIAlertActionStyleDefault 
        	                                                 handler:nil];
        	UIAlertAction *noAction = [UIAlertAction actionWithTitle:@"考虑一下" 
        	                                                   style:UIAlertActionStyleDestructive 
        	                                                 handler:nil];
    		// 向 alertController 上添加按钮
        	[alertController addAction:cancelAction];
        	[alertController addAction:okAction];
        	[alertController addAction:noAction];
          
          	// 显示 alertController 视图
        	[self presentViewController:alertController animated:YES completion:nil];
    
  • Swift

    	// 1. 创建时不添加按钮
         	
    		// 实例化 alertController 对象
    		let alertController:UIAlertController = UIAlertController(title: "警告", 
    		                                                        message: "真的要关闭 !", 
    		                                                 preferredStyle: .Alert)
    
          	// 显示,模态视图显示
    		self.presentViewController(alertController, animated: true, completion: nil)
    
    	// 2. 创建时添加按钮等信息
          
          	// 实例化 alertController 对象
          	let alertController:UIAlertController = UIAlertController(title: "警告", 
    		                                                        message: "真的要关闭 !", 
    		                                                 preferredStyle: .Alert)
    
          	// 创建按钮
          	let cancelAction:UIAlertAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil)
          	let okAction:UIAlertAction = UIAlertAction(title: "确定", style: .Default, handler: nil)
          	let noAction:UIAlertAction = UIAlertAction(title: "考虑一下", style: .Destructive, handler: nil)
            
         	// 向 alertController 上添加按钮
          	alertController.addAction(cancelAction)
          	alertController.addAction(okAction)
          	alertController.addAction(noAction)
           
          	// 显示 alertController 视图
          	self.presentViewController(alertController, animated: true, completion: nil)
    

2、alertController 的设置

  • Objective-C

    	// 设置警告框类型
    	/*
    		UIAlertControllerStyleActionSheet = 0,   上拉菜单,操作表,底部弹出
    		UIAlertControllerStyleAlert              对话框,警告,中间弹出
    	*/
    	UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" 
    	                                                                         message:@"真的要关闭 ?" 
    	                                                                  preferredStyle:UIAlertControllerStyleAlert];
        
    	// 设置按钮类型
    	/*
    		UIAlertActionStyleDefault = 0,  默认蓝色按钮,可以有多个
    		UIAlertActionStyleCancel,       取消按钮,显示在左侧或最下边,有且只能有一个
    		UIAlertActionStyleDestructive   红色警示按钮,可以有多个,
        	                                《iOS 用户界面指南》要求所有的 “警示” 样式按钮都必须排名第一
    	*/
    	UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" 
    	                                                       style:UIAlertActionStyleCancel 
    	                                                     handler:nil];
        
    	// 设置按钮点击响应事件
    	UIAlertAction *closeAction = [UIAlertAction actionWithTitle:@"关闭" 
    	                                                      style:UIAlertActionStyleDestructive 
    	                                                    handler:^(UIAlertAction * _Nonnull action) {
    
    		/*
    			点击了按钮时响应的事件
    		*/
    	}];
        
    	// 添加输入框
    	/*
    		只能添加到 UIAlertControllerStyleAlert 上,可以添加多个
    	*/
    	[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
                
    		/*
    			设置添加的 textField 属性
    		*/
    	}];
        	
    	// 添加点击按钮
    	/* 
    		添加警告框上的按钮,可以添加多个
    		取消按钮在左侧或最下边,其它按钮按照添加的顺序排列
    	*/
    	[alertController addAction:cancelAction];
          	
    	// 设置首选按钮
    	/*
    		必须在添加按钮(addAction)完成后设置,iOS 9 新添加
    		首选的按钮会有加粗效果,只能用在 UIAlertControllerStyleAlert 中
    	*/
    	alertController.preferredAction = okAction;
        
    	// 设置按钮激活状态
    	/*
    		YES 按钮激活,可点击。NO 按钮禁用,不可点击
    	*/
     	okAction.enabled = YES;
        
    	// 显示警告框视图
    	[self presentViewController:alertController animated:YES completion:nil];
        
    	// 设置警告框标题
    	alertController.title = @"登录";
        
    	// 设置警告框提示信息
    	alertController.message = @"请输入用户名和密码登录 !";
        
    	// 获取警告框标题
    	NSString *alertTitle = alertController.title;
           	
    	// 获取警告框提示信息
    	NSString *alertMessage = alertController.message;
           	
    	// 获取警告框类型,readonly
    	UIAlertControllerStyle alertStyle = alertController.preferredStyle;
          	
    	// 获取所有输入框,readonly
    	NSArray<UITextField *> *textFieldArray = alertController.textFields;
          	
    	// 获取所有按钮,readonly
    	NSArray<UIAlertAction *> *actionsArray = alertController.actions;
        	
    	// 获取按钮标题,readonly
    	NSString *actionTitle = okAction.title;
          	
    	// 获取按钮类型,readonly
    	UIAlertActionStyle actionStyle = okAction.style;
           	
    	// 获取首选按钮
    	UIAlertAction *preferredAction = alertController.preferredAction;
           	
    	// 获取按钮激活状态
    	BOOL actionEnabled = okAction.enabled;
    
  • Swift

    	// 设置警告框类型
    	/*
    		case ActionSheet   上拉菜单,操作表,底部弹出
    		case Alert         对话框,警告,中间弹出
    	*/
    	let alertController:UIAlertController = UIAlertController(title: "警告", 
    	                                                        message: "真的要关闭 !", 
    	                                                 preferredStyle: .Alert)
        
    	// 设置按钮类型
    	/*
    		case Default       默认蓝色按钮,可以有多个
    		case Cancel        取消按钮,显示在左侧或最下边,有且只能有一个
    		case Destructive   红色警示按钮,可以有多个,
    		                   《iOS 用户界面指南》要求所有的 “警示” 样式按钮都必须排名第一
    	*/
    	let cancelAction:UIAlertAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil)
        
    	// 设置按钮点击响应事件
    	let closeAction:UIAlertAction = UIAlertAction(title: "关闭", 
    	                                              style: .Destructive) { (action:UIAlertAction) in
    
    		/*
    			点击了按钮时响应的事件
    		*/
    	}
            
    	// 添加输入框
      	/*
      		只能添加到 UIAlertControllerStyleAlert 上,可以添加多个
      	*/
    	alertController.addTextFieldWithConfigurationHandler { (textField:UITextField) in
                
    		/*
    			设置添加的 textField 属性
    		*/
    	}
          	
    	// 添加点击按钮
    	/*
    		添加警告框上的按钮,可以添加多个
    		取消按钮在左侧或最下边,其它按钮按照添加的顺序排列
    	*/
    	alertController.addAction(cancelAction)
         	
    	// 设置首选按钮
    	/*
    		必须在添加按钮(addAction)完成后设置,iOS 9 新添加
    		首选的按钮会有加粗效果,只能用在 UIAlertControllerStyleAlert 中
    	*/
    	alertController.preferredAction = okAction
        
    	// 设置按钮激活状态
    	/*
    		YES 按钮激活,可点击。NO 按钮禁用,不可点击
    	*/
    	okAction.enabled = true
        
    	// 显示警告框视图
    	self.presentViewController(alertController, animated: true, completion: nil)
        
    	// 设置警告框标题
    	alertController.title = "登录"
        
    	// 设置警告框提示信息
    	alertController.message = "请输入用户名和密码登录 !"
        
    	// 获取警告框标题
    	let alertTitle:String? = alertController.title
          	
    	// 获取警告框提示信息
    	let alertMessage:String? = alertController.message
           	
    	// 获取警告框类型,readonly
    	let alertStyle:UIAlertControllerStyle = alertController.preferredStyle
            	
    	// 获取所有输入框,readonly
    	let textFieldArray:[UITextField]? = alertController.textFields
        	
    	// 获取所有按钮,readonly
    	let actionsArray:[UIAlertAction] = alertController.actions
        	
    	// 获取按钮标题,readonly
    	let actionTitle:String? = okAction.title
           	
    	// 获取按钮类型,readonly
    	let actionStyle:UIAlertActionStyle = okAction.style
           	
    	// 获取首选按钮
    	let preferredAction:UIAlertAction? = alertController.preferredAction
           	
    	// 获取按钮激活状态
    	let actionEnabled:Bool = okAction.enabled
    
原文地址:https://www.cnblogs.com/QianChia/p/5759003.html