iOS UI-AlertView(警示框)和ActionSheet(选择框、操作表单)

  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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux高性能服务器编程:进程池和线程池原理及应用(有图有代码有真相!!!)

一、问题引入 在前面编写多进程、多线程服务器时通过动态创建子进程和子线程来实现并发服务器&#xff0c;这样做有以下缺点&#xff1a; 1&#xff09;动态创建进程、线程将会比较耗费时间&#xff0c;将导致较慢的客户响应。 2&#xff09;动态创建的子进程只为一个客户服…

Linux:多进程、多线程服务器的实现解析(有图有代码有真相!!!)

一、问题引入 阻塞型的网络编程接口 几乎所有的程序员第一次接触到的网络编程都是从 listen()、send()、recv()等接口开始的。使用这些接口可以很方便的构建服务器 /客户机的模型。 我们假设希望建立一个简单的服务器程序&#xff0c;实现向单个客户机提供类似于“一问一答”的…

数据结构:神奇的B树实现解析(有图有代码有真相!!!)

一、B树引入 二叉搜索树、平衡二叉树、红黑树都是动态查找树&#xff0c;典型的二叉搜索树结构&#xff0c;查找的时间复杂度和树的高度相关O(log2N)。 1&#xff09;数据杂乱无章-------线性查找--O&#xff08;n&#xff09; 2&#xff09;数据有序-------二分查找 ---O(lo…

Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)

一、dup/dup2 有时我们希望把标准输入重定向到一个文件&#xff0c;或者把标准输出重定向到一个网络连接。系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符&#xff08;没有用的文件描述符最小的编号&#xff09;。 dup2可以让用户指定返回的文件描述符的值…

Linux:I/O多路转接之select(有图有代码有真相!!!)

一、select引入 一次 I/O 分为两个部分&#xff1a;1&#xff09;等待数据就绪 2&#xff09;进行数据转移 1、select 原理&#xff1a; select的原理就是减少等待数据就绪的比重&#xff0c;巧妙的利用等待队列机制让用户进程适当在没有资源可读/写时睡眠&#xff0c;有资…

Linux: I/O多路转接之poll(有图有代码有真相!!!)

一、poll()函数解析 不同与select使⽤用三个位图来表⽰示三个fdset的⽅方式&#xff0c;poll使⽤用⼀一个 pollfd的指针实现。pollfd结构包含了要监视的event和发⽣生的event&#xff0c; 不再使⽤用select“参数-值”传递的⽅方式。同时&#xff0c;pollfd并没有最⼤大数量限…

kalilinux装到u盘上的弊端_付费下载的歌曲,竟然无法在汽车上播放!原因在这里...

『使用某音乐播放器下载了周杰伦的110首歌曲&#xff0c;其中106首是kgm格式&#xff0c;4首mp3格式&#xff0c;装到U盘后&#xff0c;在其它设备播放只有4首mp3格式的可以播放&#xff0c;其它的均无法播放&#xff0c;请问该如何处理&#xff1f;』网友留言截图这是一位网友…

iconsvg image怎么变为path_昆凌是怎么收服天王周杰伦的?这几招太高明了

周杰伦和昆凌又出来撒狗粮了&#xff01;就在前两天(6月2日)&#xff0c;在参加郎朗的婚礼时&#xff0c;#周杰伦搂昆凌看烟花#的消息悄悄上了热搜。视频中&#xff0c;两人并肩站立&#xff0c;一起欣赏着窗外的美景。周杰伦时不时在昆凌的耳边私语几句&#xff0c;看起来很是…

Linux: I/O多路转接之epoll(有图有代码有真相!!!)

一、基本概念 epoll是Linux内核为处理大批量文件描述符而作了改进的poll&#xff0c;是Linux下多路复用IO接口select/poll的增强版本&#xff0c;它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 另一点原因就是获取事件的时候&#xff0c;它无须遍历整…

ewebeditor未授权:功能被禁用请先配置授权_SteamPY新功能——外区账号礼物自动领取...

自从PY平台增加了外区代购后发现许多玩家在购买礼物时常会发生收到礼物后准备点击入库时弹出地区不可用的提示这个问题在Steam外区账号一直频繁发生究其因在于Steam账号登录时的IP问题遇到该问题切勿拒收礼物&#xff01;通过Steam客户端清理登录授权注销退出后再次使用账号对应…

Linux: shell 中命令代换 $() 和 ``(有图有代码有真相!!!)

一、命令代换&#xff08;命令替换&#xff09; 由 或 $() 括起来的也是一条命令&#xff0c;shell先执行该命令&#xff0c;再将结果立刻代换到当前命令行中。 简单例子&#xff1a; DATEdate echo $DATE DATE$(date) echo $DATE 执行结果&#xff1a; 二、优缺点&#x…

精雕道路怎么遍弧形_【养护技术】道路“创可贴”——沥青冷补料 六大优势助力道路养护...

点击上面蓝字关注我们微信号&#xff1a;xzgsgl随着城市精细化管理目标不断提高&#xff0c;市政道路养护修补的要求也越来越高。不但对修补的外观、质量有了更高的标准&#xff0c;对修复时限也提出了一定要求&#xff0c;这就要求我们的养护单位快速、优质地完成道路修补任务…

单耳蓝牙耳机怎么连接_蓝牙耳机怎么挑选?推荐性价比高的蓝牙耳机

随着手机逐渐取消了耳机孔&#xff0c;越来越多的人们开始使用上了蓝牙耳机。在当今这个飞速发展的时代&#xff0c;蓝牙耳机无疑成为了新时代的宠儿。无论是上班族还是当代大学生等年轻化群体&#xff0c;耳机的第一选择都是蓝牙耳机。但是面对市面上如此多的蓝牙耳机&#xf…

Linux: shell命令 eval (有图有代码有真相!!!)

一、eval 命令定义 shell中的eval命令将会首先扫描命令行进行所有的替换&#xff0c;然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。 该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。不过这些变量本身并不复杂。eval 命令也可…

Linux:shell脚本命令: /dev/null 21 的理解

1、可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失&#xff0c;而不…

qlabel可以选中吗_惊现凡尔赛式排版!原来微信公众号排版样式还可以“变装”?...

各位小伙伴们&#xff0c;要集中注意力了&#xff01;接下来就是考验你们观察力的时候啦&#xff01;快跟着小妹儿看一下&#xff0c;一个样式到底能有多少种玩法&#xff1f;文中使用工具为公众号编辑器-小蚂蚁编辑器。1、添加/删除背景编辑器里的内容样式是可以增加或者删除背…

LInux:shell 彩色进度条实现(有图有代码有真相!!!)

一、进度条原理&#xff08;以前的博客详细讲述过&#xff09;&#xff1a;http://blog.csdn.net/sharp_up/article/details/55506555 二、颜色设置 // 字体颜范围(前景颜色):30~39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 // 字背景颜色范围(背景颜…

vb语言中怎样编码窗体中所有字体加粗_VBText控件中使字体加粗和倾斜的代码是什么...

展开全部VBText控件中使字体加粗和倾e69da5e6ba9062616964757a686964616f31333365656537斜的代码是&#xff1a;加粗 Label1.FontBold True斜体 Label1.FontItalic true拓展资料&#xff1a;TextBox控件&#xff1a;a. 控制Textbox输入格式&#xff0c;我想大多人都遇到这个…

Linux: 系统配置 crond 和 crontab(有图有代码有真相!!!)

1、相关概述 linux下工作调度的种类有&#xff1a;at , cron 一种是例行性的&#xff0c;就是每隔一定的周期来办某事。 一种是突发性的&#xff0c;就是做完这一次没有以后。 crontab这个命令所设置的工作将会一直循环进行下去&#xff0c;循环的时间可以是分钟、小时、…

前端radio单选框默认选中_「radio选中」单选框radio总结(获取值、设置默认选中值、样式) - seo实验室...

radio选中单选框 radio是否1.获取值$("input[namekillOrder]:checked").val();$(input:radio:checked).val()&#xff1b;$("input[typeradio]:checked").val();$(":radio[checked]").each(function(radio){alert($(this).val());2.设置第一个Ra…