UIActionSheet是在IOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件。

为了快速完成这例子,我们打开Xcode 4.3.2, 先建立一个single view application。然后再xib文件添加一个button,用来弹出sheet view。

1、首先在.h文件中实现协议,加代码的地方在@interface那行的最后添加<UIActionSheetDelegate>,协议相当于java里的接口,实现协议里的方法。

@interface sheetviewViewController : UIViewController<UIActionSheetDelegate> @end
2、添加button,命名button为showSheetView.

3、为button建立Action映射,映射到.h文件上,事件类型为Action ,命名为showSheet。

4、在.m文件上添加点击事件代码

图的效果是这样的:

- (IBAction)showSheet:(id)sender { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"title,nil时不显示" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"第一项", @"第二项",nil]; actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; [actionSheet showInView:self.view]; }

actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//设置样式

参数解释:

cancelButtonTitle  destructiveButtonTitle是系统自动的两项。

otherButtonTitles是自己定义的项,注意,最后一个参数要是nil。

[actionSheet showInView:self.view];这行语句的意思是在当前view显示Action sheet。当然还可以用其他方法显示Action sheet。

对应上面的图和代码,一目了然了把

5、接下来我们怎么相应Action Sheet的选项的事件呢?实现协议里的方法。为了能看出点击Action sheet每一项的效果,我们加入UIAlertView来做信息显示。下面是封装的一个方法,传入对应的信息,在UIAlertView显示对应的信息。

-(void)showAlert:(NSString *)msg { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Action Sheet选择项" message:msg delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alert show]; }

那相应被Action Sheet选项执行的代码如下:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { [self showAlert:@"确定"]; }else if (buttonIndex == 1) { [self showAlert:@"第一项"]; }else if(buttonIndex == 2) { [self showAlert:@"第二项"]; }else if(buttonIndex == 3) { [self showAlert:@"取消"]; } } - (void)actionSheetCancel:(UIActionSheet *)actionSheet{ } -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{ } -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{ } 可以看到 buttonIndex 是对应的项的索引。

看到那个红色的按钮没?那是ActionSheet支持的一种所谓的销毁按钮,对某户的某个动作起到警示作用,

比如永久性删除一条消息或图像时。如果你指定了一个销毁按钮他就会以红色高亮显示:

actionSheet.destructiveButtonIndex=1;

与导航栏类似,操作表单也支持三种风格 :

UIActionSheetStyleDefault              //默认风格:灰色背景上显示白色文字

UIActionSheetStyleBlackTranslucent     //透明黑色背景,白色文字

UIActionSheetStyleBlackOpaque          //纯黑背景,白色文字

用法:

actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//设置样式

我选sheet 里的第一项,显示如下:

6、注意事项,在开发过程中,发现有时候UIActionSheet的最后一项点击失效,点最后一项的上半区域时有效,这是在特定情况下才会发生,这个场景就是试用了UITabBar的时候才有。解决办法:

在showView时这样使用,[actionSheet showInView:[UIApplication sharedApplication].keyWindow];或者[sheet showInView:[AppDelegate sharedDelegate].tabBarController.view];这样就不会发生遮挡现象了。

代码获取:https://github.com/schelling/YcDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

转载于:https://www.cnblogs.com/phonegap/archive/2012/05/31/2535610.html

IOS学习4 UIActionSheet的使用相关推荐

  1. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...

    IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...

  2. ios学习 准备列表

    2019独角兽企业重金招聘Python工程师标准>>> Skip to content This repository Pull requests Issues Gist Watch ...

  3. iOS学习:调用相机,选择图片上传,带预览功能

    iOS学习:调用相机,选择图片上传,带预览功能 发表于2年前(2013-05-30 21:38)   阅读( 18194) | 评论( 16) 27人收藏此文章,我要收藏 赞3 8月22日珠海 OSC ...

  4. iOS学习路线图--UIKIt概述

    1.先分享一张iOS学习路线图吧,网上找的,感觉不错 2.再来一张UIkit类框架图,也是网上找的 3.UIkit各类概述 1.UIAcceleration: 被叫做加速事件的一个UIAccelera ...

  5. IOS学习笔记39——拍照、从相册选图并对图片进行裁剪

    2013第一篇,大家新年快乐!感谢一直关注我博客的同学们,有你们的支持我才有动力越做越好!有阵子没写博客了,因为前阵子着实比较忙,没时间整理,今天主要实现一个小Demo,我们知道在Instagram或 ...

  6. 【原】iOS学习之事件处理的原理

    在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...

  7. iOS学习——核心动画之Layer基础

    iOS学习--核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  8. OpenCV for Ios 学习笔记(4)-标记检测1

    本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...

  9. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  10. iOS学习资源(一)

    用了印象笔记也很久了,这里就把自己整理的一些学习资源分享出来.需要共享印象笔记的小伙伴可以联系: shavekevin@gmail.com 我会把自己的工作笔记共享给大家,和大家一起学习,一起进步. ...

最新文章

  1. BCH预共识机制信息整理
  2. Python+OpenCV 平移、旋转、缩放、翻转
  3. 合肥天鹅湖万达广场机器人_王健林再考察合肥!瞄准政务、高新,年末合肥楼市出现区域分化...
  4. 日本比中国快一个小时,泰国比中国慢一个小时
  5. Floyd Warshall算法
  6. 4-2   ADO.NET-查询和检索数据1
  7. mysql查询时间出来数字_mysql查询时间出来数字的解决方法
  8. leetcode题解46-全排列
  9. @程序员,2020年,这类程序员要做好苦日子准备了!
  10. 【codevs2144】砝码称重 2(折半搜索)
  11. SpringBoot之maven包管理
  12. 学嵌入式必须掌握的经验
  13. Spring Web MVC(二)
  14. java 记住密码的实现_javaweb实现记住密码功能
  15. 《亲密关系》笔记(1)
  16. Java进阶篇 设计模式之十四 ----- 总结篇
  17. 2019年培养工作室主力计划——第1次任务
  18. 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2
  19. Android-Socket传输 GPRS网络
  20. win10开始菜单 此计算机,主编解决win10开始菜单出现ms-resource:AppListName的详尽操作步骤...

热门文章

  1. python数字图像处理(4):图像数据类型及颜色空间转换
  2. 《机器学习实战》完整读书笔记
  3. 推荐系统开源软件汇总和评点
  4. java arraydeque poll,Java ArrayDeque pollLast()方法
  5. python3.7保存不了_Python3.7 traceback捕获打印和保存异常
  6. 增大表名最大长度_全球最大室内滑雪场结构技术解密!
  7. 区块链应用 项目开发步骤
  8. phpmyadmin创建账号授权指定表
  9. 偏微分方程数值解法python_微分方程 | 常微分
  10. MySQL四种事务隔离级的说明