iOS程序中的Action Sheet就像Windows中的 “确定-取消”对话框一样,用于强制用户进行选择。当用户将要进行的操作具有一定危险时,常常使用Action Sheet对用户进行危险提示,这样,用户有机会进行取消操作。

Alert相当于Windows中的Messagebox,跟Action Sheet也是类似的。不同的是,Alert可以只有一个选择项,而Action Sheet却至少要两个选项。

跟以往一样,假设我们已经建立了一个Single View Application,打开其中的ViewController.xib文件。

首先,我们先放一个Button在View上面,我们要的效果是:点击Button打开一个Action Sheet,接下来点击Action Sheet的一个按钮,弹出一个Alert。

1、首先,要在ViewController.h中添加代码,使其实现一个协议。添加代码的地方在@interface那行的最后添加<UIActionSheetDelegate>,添加之后那行代码是:

@interface ViewController : UIViewController<UIActionSheetDelegate>

2、拖放一个Button到View上,将Button的名称改为 Do something。

3、为这个Button建立Action映射,映射到ViewController.h中,事件类型默认,名称为 buttonPressed。

4、在ViewController.m中找到buttonPressed方法,添加以下代码:

- (IBAction)buttonPressed:(id)sender {UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"Are you sure?"delegate:selfcancelButtonTitle:@"No Way!"destructiveButtonTitle:@"Yes, I'm sure!"otherButtonTitles:nil];[actionSheet showInView:self.view];
}

如上面代码所示,创建一个Action Sheet需要多个参数:

(1)initWithTitle:设置标题,将会显示在Action Sheet的顶部

(2)delegate:设置Action Sheet的委托。当Action Sheet的一个按钮被按下后,它的delegate将会被通知,并且会执行这个delegate的actionSheet: didDismissWithButtonIndex方法将会执行。这里,我们将delegate设成self,这样可以保证执行我们自己在ViewController.m写的actionSheet: didDismissWithButtonIndex方法

(3)cancelButtonTitle:设置取消按钮的标题,这个取消按钮将会显示在Action Sheet的最下边

(4)destructiveButtonTitle:设置第一个确定按钮的标题,这个按钮可以理解成:"好的,继续"

(5)otherButtonTitles:可以设置任意多的确定按钮,想要添加两个按钮,可以写成:

otherButtonTitles: @”New Button 1”, @”New Button 2”, nil

注意到,最后一个参数要是nil

[actionSheet showInView:self.view]这条语句用来显示Action Sheet,准确的说,这条语句是给这个Action Sheet设置Parent,而这个Parent必须是一个View,并且是当前正在显示的View。

5、然后,我们在ViewController.m中添加一个方法,完整代码为:

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {if (buttonIndex != [actionSheet cancelButtonIndex]) {NSString *msg = nil;msg = @"You can breathe easy, everything went OK.";UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Something was done"message:msgdelegate:selfcancelButtonTitle:@"Prew!"otherButtonTitles: nil];[alert show];}
}

这个方法就是我们轻触了Action Sheet之后将会执行的代码。由于之前我们将Action Sheet的delegate设成self,因而这个方法将会被调用,这个方法的参数buttonIndex表示用户所轻触的按钮的编号,按钮编号是从上到下,从0开始的,例如,"Yes, I'm sure!"这个按钮的编号是0,因为它是第一个确定按钮,取消按钮是显示在最下边的。取消按钮的编号,可以通过[actionSheet cancelButtonIndex]直接获得。

构造一个Alert也要填写很多参数:

(1)initWithTitle:设置标题,将会显示在Alert的顶部

(2)message:设置提示消息内容

(3)delegate:设置Alert的委托。这里,我们设成self

(4)cancelButtonTitle:设置取消按钮的标题

(5)otherButtonTitles:与Action Sheet类似

[alert show]这条语句用来显示Alert。

6、运行一下,看看效果吧:

来源:http://my.oschina.net/plumsoft/blog/42763

UIActionSheet与UIAlertView相关推荐

  1. 【转】iOS开发6:UIActionSheet与UIAlertView

    原文: http://my.oschina.net/plumsoft/blog/42763 iOS程序中的Action Sheet就像Windows中的 "确定-取消"对话框一样, ...

  2. UIAlertView UIActionSheet随笔笔记

    系统UIAlertView在很多地方有使用到,其创建的初始化的方法为: - (id)initWithTitle:(NSString *)title message:(NSString *)messag ...

  3. UIAlertController (UIActionSheet, UIAlertView is deprecated in iOS 8.)

    iOS 8 后 UIAlertView 和  UIActionSheet 都被合并到了 UIAlertController里面. 文档原文: Important: UIAlertView is dep ...

  4. UIActionSheet

    我感觉UIActionSheet和UIAlertView的用法差不多,都很简单,下面给出一个简单的Demo,具体想用哪个,根据公司要求和个人爱好. #import "ViewControll ...

  5. iOS8底部弹出日期选择或自定义选择器的方法

    本文需要实现的日期选择器和自定义选择器效果如下: 在iOS8之前,可以通过UIActionSheet来实现,在iOS8之后,可以通过UIAlertController实现,UIAlertControl ...

  6. UIKit框架使用总结--看看你掌握了多少

    一.经常使用的,基本就是每次项目迭代都需要使用的 UIView.UILabel.UIImage.UIColor.UIFont.UIImageView.UITextField.UIButton. UIS ...

  7. (转载+ 修改) 深入理解UIWindow

    转载于  http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html 每一个IOS程序都有一个UIWindow,在我们通过模板 ...

  8. 如何理解delegate (委托)设计模式

    delegate (委托)设计模式 iOS 编程语言是 Objective-C,   简称 OC. 谈起 OC的特性,人们常说,OC 不支持多继承.但 Delegate 弥补了这个缺陷. 有了Dele ...

  9. B12-UIAlertController(NS_CLASS_AVAILABLE_IOS(8_0))。

    在IOS8之后,UIAlertController替代了UIActionSheet和UIAlertView.UIAlertController的使用主要分三个步骤: 一.初始化 UIAlertCont ...

最新文章

  1. 贝叶斯统计的无信息先验和共轭先验
  2. 人脸识别如何在大型银行中大规模商用?
  3. java变量初始化0.00
  4. VCenter电源报警
  5. 在Java生成的html页面加水印,Java在Excel中添加水印的实现(单一水印、平铺水印)...
  6. Sql server管理工具SQLManagementStudio2008的安装
  7. flex 鼠标放在组件上变手型
  8. 洛谷P1828 香甜的黄油 Sweet Butter
  9. 【离散数学中的数据结构与算法】八 排列与组合四
  10. 写了4年博客,我终于也出了一本书。
  11. linux怎么重新编译c文件,linux编译c文件
  12. 再看2015 --北漂程序员的成长史
  13. 总结:抓包命令之linux抓包命令
  14. JavaGUI版聊天室
  15. Sampler 半小时快速搭建PostgreSQL简易监控
  16. 计算机程序如何计算除法,在EXCEL表格公式中怎样计算乘积及除法?
  17. If you insist running as root, then set the environment variable RUN_AS_USER=root before running thi
  18. html黑科技导入res,css黑科技
  19. 以下11條小建議,幫助你們的異地戀一直保持活力
  20. Android Studio Button 美化

热门文章

  1. 潜伏者(洛谷-P1071)
  2. 搜索 —— 深度优先搜索(DFS)
  3. 连连看(HDU-1175)
  4. 计算书费(信息学奥赛一本通-T1104)
  5. 43 MM配置-采购-条件-定价过程-定义存取顺序
  6. qtwebengineprocess已停止工作_windows资源管理器总是停止工作
  7. 读取文本节点_我最喜爱的Dynamo节点TOP 10
  8. 剖析Caffe源码之Layer_factory
  9. Gated Convolution
  10. pycharm引入其他目录的包报错,import报错