1 #import "ViewController.h" 2 3 @interface ViewController ()<UIAlertViewDelegate,UIActionSheetDelegate> 4 5 @end 6 7 @implementation ViewController 8 9 #pragma mark - 生命周期 10 - (void)viewDidLoad { 11 [super viewDidLoad]; 12 // 创建展示AlertView的按钮 13 UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem]; 14 [btn setTitle:@"AlertView" forState:UIControlStateNormal]; 15 [btn setFrame:CGRectMake(130, 150, 100, 100)]; 16 //btn.center =self.view.center; 17 [btn setBackgroundColor:[UIColor orangeColor]]; 18 [btn addTarget:self action:@selector(showAlert) forControlEvents:UIControlEventTouchUpInside]; 19 20 // 创建展示ActionSheet的按钮 21 [self.view addSubview:btn]; 22 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeSystem]; 23 [btn1 setTitle:@"ActionSheet" forState:UIControlStateNormal]; 24 [btn1 setFrame:CGRectMake(130, 300, 100, 100)]; 25 [btn1 setBackgroundColor:[UIColor redColor]]; 26 [btn1 addTarget:self action:@selector(showActionSheet) forControlEvents:UIControlEventTouchUpInside]; 27 [self.view addSubview:btn1]; 28 29 30 } 31 #pragma mark - 关联事件 32 33 #pragma mark - 警示框 34 - (void)showAlert 35 { 36 /* 37 38 UIAlertView警示框控件 39 注意 40 不用创建全局的Alert 41 尽量不要关联逻辑操作,如果关联实现协议:UIAlertViewDelegate以及里面的协议方法 42 43 */ 44 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误" 45 message:@"网络连接失败" 46 delegate:self 47 cancelButtonTitle:@"好的" 48 otherButtonTitles:@"方案1",@"方案2",@"方案3", nil]; 49 50 [alert show]; 51 } 52 #pragma mark - 选择框 53 - (void)showActionSheet 54 { 55 /* 56 57 UIActionSheet 选择框 58 注意 59 不用创建全局的UIActionSheet 60 尽量关联逻辑操作,如果关联实现协议:UIActionSheetDelegate以及里面的协议方法 61 62 */ 63 64 UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"请选择你的节操充值额度" 65 delegate:self 66 cancelButtonTitle:@"算了,不要了" 67 destructiveButtonTitle:@"18.00RMB" 68 otherButtonTitles:@"19.00RMB",@"20.00RMB",@"21.00RMB", nil]; 69 70 [action showInView:self.view]; 71 } 72 73 #pragma mark - 选择框代理方法 74 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 75 { 76 switch (buttonIndex) { 77 case 0: 78 NSLog(@"第一种情况"); 79 break; 80 case 1: 81 NSLog(@"第二种情况"); 82 break; 83 case 2: 84 NSLog(@"第三种情况"); 85 break; 86 case 3: 87 NSLog(@"第四种情况"); 88 break; 89 case 4: 90 NSLog(@"第五种情况"); 91 break; 92 93 default: 94 break; 95 } 96 } 97 #pragma mark - 警示框代理方法 98 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 99 { 100 switch (buttonIndex) { 101 case 0: 102 NSLog(@"序号为0"); 103 break; 104 case 1: 105 NSLog(@"序号为1"); 106 break; 107 case 2: 108 NSLog(@"序号为2"); 109 break; 110 case 3: 111 NSLog(@"序号为3"); 112 break; 113 114 default: 115 break; 116 } 117 } 118 119 120 - (void)didReceiveMemoryWarning { 121 [super didReceiveMemoryWarning]; 122 // Dispose of any resources that can be recreated. 123 } 124 125 @end
1 // 2 // ViewController.m 3 // IOS_0226_UIAlertController 4 // 5 // Created by ma c on 16/2/26. 6 // Copyright © 2016年 博文科技. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 @property (weak, nonatomic) IBOutlet UIButton *btnClick; 13 14 @end 15 16 @implementation ViewController 17 18 /* 19 UIPresentationController ->管理所有Modal出来的控制器 20 21 1.管理所有通过presentViewController方法显示出来的控制器 22 2.只要调用了presentViewController方法就会创建UIPresentationController 23 3.管理/监听切换控制器的过程 24 4.属性 25 //当前控制器 26 @property(nonatomic, strong, readonly) UIViewController *presentingViewController; 27 //切换的控制器 28 @property(nonatomic, strong, readonly) UIViewController *presentedViewController; 29 //切换的控制器视图 30 - (nullable UIView *)presentedView; 31 32 5.UIViewController属性 33 34 @property (nonatomic,readonly) UIPresentationController *presentationController 35 @property (nonatomic,readonly) UIPopoverPresentationController *popoverPresentationController 36 37 这两个属性指向UIPresentationController 38 39 */ 40 41 - (void)viewDidLoad { 42 [super viewDidLoad]; 43 self.view.backgroundColor = [UIColor cyanColor]; 44 45 46 } 47 48 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 49 { 50 //[self createAlertVC]; 51 [self createPopoverPresentationVC]; 52 } 53 54 - (void)createAlertVC 55 { 56 //警示框 57 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"好久不见,你又不乖了。" preferredStyle:UIAlertControllerStyleAlert]; 58 //添加按钮 59 UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { 60 NSLog(@"点击了确定按钮"); 61 }]; 62 63 [alert addAction:action]; 64 65 [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { 66 NSLog(@"点击了取消按钮"); 67 }]]; 68 69 //添加文本框 70 [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { 71 textField.borderStyle = UITextBorderStyleRoundedRect; 72 textField.textColor = [UIColor redColor]; 73 textField.text = @"123"; 74 [textField addTarget:self action:@selector(uernameChange:) forControlEvents:UIControlEventEditingChanged]; 75 76 }]; 77 [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { 78 textField.borderStyle = UITextBorderStyleRoundedRect; 79 80 textField.secureTextEntry = YES; 81 textField.text = @"123"; 82 }]; 83 [self presentViewController:alert animated:nil completion:nil]; 84 } 85 86 - (void)uernameChange:(UITextField *)textField 87 { 88 NSLog(@"%@",textField.text); 89 } 90 91 92 - (void)createPopoverPresentationVC 93 { 94 UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"提示" message:@"请选择操作" preferredStyle:UIAlertControllerStyleActionSheet]; 95 //设置展示形式 96 actionSheet.modalTransitionStyle = UIModalPresentationPopover; 97 self.popoverPresentationController.sourceView = self.btnClick; 98 self.popoverPresentationController.sourceRect = self.btnClick.bounds; 99 100 101 UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { 102 NSLog(@"点击了确定按钮"); 103 }]; 104 [actionSheet addAction:action]; 105 106 [actionSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { 107 NSLog(@"点击了取消按钮"); 108 }]]; 109 110 [self presentViewController:actionSheet animated:nil completion:nil]; 111 112 } 113 114 115 116 @end