*  UIAlertController & UIAlertAction

*  1. 在iOS8中,我们失去了两个非常简单的控件,那就是UIAlertView、UIActionSheet,取而代之的是UIAlertController和UIAlertAction

*  2. 在iOS8中,UIAlertController控件使用两种样式代理题UIAlertView和UIActionSheet

*  3. 意想不到的事情是UIAlertController的父类是UIViewController,所以要想显示出来不再是之前的show方法,而是使用推出模态视图的方式推出

*  4. 在UIAlertController中,并没有按钮的添加,有的是Title和Message这样的信息显示,而按钮,则是放在UIAlertAction类中了

*  5. 如果我们想要添加一个按钮,通过创建UIAlertAction对象进行添加,按钮的事件也不再使用代理方法,而是通过Block的方式,我们可以添加多个按钮

*  6. 除此之外,UIAlertController也可以添加UITextField,UITextField的设置放在了Block内部,我们可以通过数组alertController.textFields来获取添加的输入框中的值,同样,输入框我们可以添加多个

*  !!!7. !!!注意:输入框的添加只能在alertView样式下添加,如果是在actionSheet方式下添加,会造成运行时错误,所以在添加输入框前最好添加判断

*/

// 看下效果图

// 主要代码

#pragma mark 分段控制器事件

- (IBAction)segmentedControlAction:(UISegmentedControl *)sender

{

// 1. 创建UIAlertControl变量,但并不穿GIAn

UIAlertController *alertController = nil;

// 2. 根据点击的item创建不同样式的alertController

switch (sender.selectedSegmentIndex) {

case 0: { // 弹出AlertView

alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];

break;

}

case 1: { // 弹出ActionSheet

alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleActionSheet];

break;

}

default:

break;

}

// 3. 添加取消按钮

// 3.1 UIAlertAction 表示一个按钮,同时,这个按钮带有处理事件的block

UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

NSLog(@"取消");

}];

// 3.2 添加到alertController上

[alertController addAction:action];

// 4. 添加需要谨慎操作的按钮,文字默认是红色的

[alertController addAction:({

UIAlertAction *action = [UIAlertAction actionWithTitle:@"谨慎操作的按钮" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

NSLog(@"谨慎操作的按钮");

}];

action;

})];

// 5. 添加确定按钮

[alertController addAction:({

UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

NSLog(@"确定");

// 打印输入框的用户名和密码

NSString *userNameStr = [alertController.textFields[0] text];

NSString *passwordStr = [alertController.textFields[1] text];

NSLog(@"userName is: %@  password is: %@", userNameStr, passwordStr);

}];

action;

})];

// 6. 添加输入框到alertView中,注意,actionSheet是没有办法添加textField的,强行添加会Crash

if (alertController.preferredStyle == UIAlertControllerStyleAlert) {

// 添加用户名输入框

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {

// 给输入框设置一些信息

textField.placeholder = @"请输入用户名";

textField.textAlignment = NSTextAlignmentCenter;

}];

// 添加密码输入框

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {

textField.placeholder = @"请输入密码";

textField.secureTextEntry = YES;

textField.textAlignment = NSTextAlignmentCenter;

}];

}

// 7. 显示(使用模态视图推出)

[self presentViewController:alertController animated:YES completion:nil];

}

二。在AlertController中直接添加输入框

转载于:https://www.cnblogs.com/star001/p/5458131.html

UIAlertAction添加输入框相关推荐

  1. antdv select下拉菜单自由扩展—添加输入框的使用问题

    背景 antdv select 官方使用dropdownRender对下拉菜单进行自由扩展, 为了解决点击 dropdownRender 里的内容浮层关闭的问题,官方建议添加preventDefaul ...

  2. html5画布添加输入框,JS,HTML5 - 在画布上添加文本输入值作为fillText

    我试图用HTML5 canvas来玩弄一点,而我只是在制作一个有趣的小型web应用程序,但我已经陷入困境.JS,HTML5 - 在画布上添加文本输入值作为fillText 我希望用户输入文本到文本框, ...

  3. 在datagrid中的toolbar添加输入框

    转自:https://blog.csdn.net/u013178480/article/details/72358551 1 <code class="language-html&qu ...

  4. Jquery 实现动态添加输入框编号

    输入框动态增加和删除并重新编号: 代码附上: <!DOCTYPE html> <html lang="en"> <head><meta c ...

  5. 分页输入框跳转 java_displaytag 分页-添加页码输入框跳转至指定页

    环境前提:工程引用displaytag-1.2.jar 使用displaytag自动生成的分页 修改分页步骤 1.修改配置文件displaytag.properties 原配置文件:displayta ...

  6. jQuery、ajax添加Json数据

    需求说明: 简单的演示ajax提交json数据. 代码说明: ajax在传输数据的时候基本格式大都是固定的,只需要修改传输类型即可.下面介绍基本的参数提交. 步骤一:建立一个html或者jsp页面,引 ...

  7. 优秀的 jQuery 文本输入框自动完成 自动提示插件

    文框输入框的自动完成和自动提示功能可以帮助用户快速的完成操作,是非常好的产品使用体验.这里向大家推荐一款优秀的 jQuery 文本输入框自动完成 & 自动提示插件,帮助你在网站中轻松添加输入框 ...

  8. vue中怎么清空tab选项卡的缓存_vuejs 内置组件component实现tab切换懒加载和表单输入框内容的清空...

    最近项目中使用了vue2.0 官网脚手架进行了开发.开发中的踩一些坑一直没有来得及整理.本篇文章就vuejs内置组件component的一些使用进行一些总结. 1.使用component 实现tab切 ...

  9. HTML文本框添加和删除

    <title>test6</title> <script> var x = 4; //给按钮添加点击事件 function add(){ //添加输入框 //1.创 ...

最新文章

  1. 转发 DDoS攻防战 (一) : 概述
  2. 好程序员大数据培训技术分享:Hadoop集群同步
  3. 一个基于Node.js的本地快速测试服务器
  4. Docker(二)安装及常用命令
  5. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
  6. 2018百度之星程序设计大赛 - 资格赛 P1006三原色图(MST,并查集)
  7. iOS开发警告The image set name xxx is used by multiple image sets.
  8. HTML5学习总结(1)——HTML5基础知识
  9. [2018.03.29 T1] 异或
  10. VirtualBox安装Windows XP图文教程
  11. Java游戏编程——愤怒的小鸟(一)
  12. SU插件情报局 | SUBD(细分曲面)详细中文介绍
  13. html整人js代码大全,这几行 javascript 代码能让你的浏览器崩溃?
  14. matlab eemd输出,如何使用eemd工具包
  15. 根号2以及π的计算--关于无理数的畅想
  16. 如何用Word编辑参考文献(转)
  17. opencv matlab配置,MATLAB配置mexopencv
  18. 2011正月初3 震中映秀
  19. 如何在中国更容易走向成功,成为二八定律中的二?
  20. 这才是真正的Git——Git内部原理了解

热门文章

  1. 二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)
  2. LeetCode 912. 排序数组(10种排序)
  3. LeetCode 797. 所有可能的路径(DFS)
  4. 10种C++排序算法
  5. 公需科目必须学吗_专业技术人员一般公需科目学习的通知
  6. c2010页面闪现_vue使用v-if v-show页面闪烁,div闪现的解决方法
  7. vue热更新无法关闭_vue-cli3热更新失效
  8. 处理器指令编码可重定义的方法_从零开始设计四位栈处理器(2)——结构与指令集...
  9. ios html高度自适应,iOS UILabel高度自适应终结篇
  10. java获取参数编码_java获取接口数据编码问题