对话框视图UIAlertView,上拉菜单UIActionSheet,以及9.0之后完全取代他们的的UIAlertController

原创 2015年11月21日 20:42:07

我们经常在通关游戏,或者提示信息的时候看到屏幕中央直接弹出个视图,其实这是一种对话框视图,通过UIAlertView可以实现很多更灵活的功能

下面是初始化和显示一个带有取消和确定的对话框视图



按住command + 左键 点击UIAlertView,我们会在它的声明里看到有一个alertViewStyle这个属性,这是一个枚举,通过更改,我们可以实现文字,密码,登陆框的效果

文字


密码


登陆框


当然,我们还可以给每一个button添加一个点击事件,比如点击确定,实现页面跳转等其他功能.首先这需要先签订一个协议UIAlertViewDelegate,然后使用这个方法 


每个按钮都有一个下标,cancel为0,otherButton依次增加,为了方便就直接演示打印输出了.....


在视图控制器中,我们还会用到一个上拉菜单视图,创建上拉菜单的形式和对话框类似.




同样的,我们也可以为每个按钮添加响应事件,首先签订UIActionSheetDelegate协议


这里要记住,destructiveButton的下标为0,因为《iOS 用户界面指南》要求所有的“毁坏”样式按钮都必须排名第一,其次是otherButton,最后才是cancelButton

前面的对话框视图UIAlertView和上拉菜单UIActionSheet能实现各种非常灵活的功能,但是,苹果却在iOS 9 之后把他们两弃用了..弃用了...弃用了...(重要的事情说3遍),虽然他们还是可以在XCODE7 中强制使用,但不管怎么说,苹果要求我们干啥,我们还是得干啥.SO.......苹果又在iOS 8的时候推出了UIAlertController(现在已经完全取代前两者了).

其实UIAlertController在功能上和UIViewAlert以及UIActionSheet是相同的,UIAlertController以一种模块化替换的方式来代替这两货的功能和作用,是使用对话框还是使用上拉菜单,这取决于你在设置的时候选取怎样的首选样式.


在苹果的官方文档中可以直接看到这段示例代码,在preferredStyle后面就是你想让它以对话框,还是上拉菜单显示,有UIAlertControllerStyleActionSheet 和 UIAlertControllerStyleAlert

两种,同创建UIAlertView和UIActionSheet相比,我们不需要在添加代理,也不需要在初始化中指定按钮.

而通过UIAlertAction的实例,我们可以将想要的动作按钮添加到控制器上,UIAlertAction由标题字符串,样式以及当用户选中该动作是运行的代码块组成.通过UIAlertActionStyle,可以选择三种动作样式: 常规(default)   取消(cancel) 以及警示 (destructive)




按钮显示的次序,取决于它们添加到对话框控制器上的次序,一般来说,根据苹果官方指定的<iOS用户界面指南>,在拥有两个按钮的对话框中,你应当将取消按钮放在左边(PS:我这里显示的是上拉菜单的.....懒得改了..).   同时,有一点要注意,取消按钮是唯一的,如果添加了第二个取消按钮,那么将会这样..



当然,我们也可以在每一个按钮的BLOCK中添加响应事件,实现自己需要的功能.......

UIAlertController中还有很多的功能供我们学习,挖掘,警示对话框,文本对话框,如何在输入多少字数的字符的情况下才激活按钮.......这些还需要以后不断学习,思考大笑,我这只是简单说了一下如何创建基本的视图,后面的东西还有很多.........

UIAlertController的使用(ios9.0后代替UIAlertView与UIActionSheet)

UIAlertController是用来代替之前我们使用的UIAlertView和UIActionSheet,这次的改进总体来讲,感觉思路更清晰简洁了,使用起来也是颇为顺手,下面不多说老样子上代码...
  • siwen1990
  • siwen1990
  • 2016年01月21日 18:06
  • 4159

【UIkit】-8-UIActionSheet - 底部弹出提示,快要被取代

暂无实际内容。 参考 http://my.oschina.net/u/2340880/blog/409907 http://blog.csdn.net/banying...
  • u013059266
  • u013059266
  • 2015年07月22日 12:24
  • 985

ios 9.0以后关于UIAlertView和 UIActionSheet使用的一些新的变化

IOS UIAlertController 弹框 (ios 9.0 后代替了UIAlertView弹框 和 UIActionSheet下弹框) [摘要:正在IOS 9.0 后 苹果民圆宣告没有再...
  • cxiao_11
  • cxiao_11
  • 2016年04月11日 13:43
  • 1467

IOS开发UI篇之──自定义UIActionSheet【转】

UIActionSheet类系iOS开发中实现警告框的重要的类,而在好多应用中,都对它进行了扩展,今天介绍一下自定义风格的UIActionSheet 一、自定义CustomActio...
  • chenyefei
  • chenyefei
  • 2016年11月18日 17:29
  • 624

当UIActionSheet的title个数不确定时如何处理

如果按正规的方法添加后是这样的: 修改后: 终于弄好了,上代码吧: UIActionSheet *actionSheet = [[UIActionSheeta...
  • chenyong05314
  • chenyong05314
  • 2013年05月22日 17:50
  • 3006

UIActionSheet关闭动画过程中调用delegate = nil 导致的内存泄露

UIActionSheet在动画期间(ActionSheet button点击之后,到didDismissWithButtonIndex调用完成之前)设置delegate为空会导致delegate无法...
  • liqinghua1653
  • liqinghua1653
  • 2014年06月11日 23:41
  • 1914

iOS 网络资源汇总之UI

目录 下拉刷新模糊效果AutoLayout富文本图表表相关与Tabbar 隐藏与显示HUD与Toast对话框其他UI 具体内容 下拉刷新 EGOTableViewPullRe...
  • qq_30513483
  • qq_30513483
  • 2016年05月13日 09:41
  • 3302

IOS开发之自定义UIActionSheet

IOS开发中,经常会用到UIActionSheet,但是,默认的只能添加按钮。如果能自定义的话,岂不是更好?上网搜了一下,都是只有那一种代码,通过设置几个按钮来增加UIActionSheet的高度,不...
  • u013263917
  • u013263917
  • 2014年05月05日 15:58
  • 973

ios 关于UIAlertView与UIActionSheet的区别,以及在使用过程中注意事项

UIAlertView *alert =[[UIAlertView alloc] initWithTitle:@"hello" message:@"I'm ...
  • cxiao_11
  • cxiao_11
  • 2016年04月11日 13:49
  • 425

一劳永逸,iOS 自定义 ActionSheet 封装流程

原文链接:http://www.jianshu.com/p/cfb87a7db7b1 本文为 iOS 自定义视图封装《一劳永逸》系列的第四期,旨在提供封装思路,结果固然重要,但理解过程才最好。授人以...
  • qq_34047841
  • qq_34047841
  • 2017年05月08日 22:59
  • 189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对话框视图UIAlertView,上拉菜单UIActionSheet,以及9.0之后完全取代他们的的UIAlertController
举报原因:
原因补充:

(最多只允许输入30个字)