IOS UIActionSheet的使用方法
在IOS的用户接口向导中,苹果提供了另外一种显示警告框的手法,叫做UIActionSheet.它和UIAlertView比起来不会显得过于急切和紧张。而是很温和地在继续流程之前给用户提供了诸多选择。
1.普通的sheet框使用
同UIAlertView一样,sheet也可以很简单的创建并且显示.
- (IBAction)actionSheetShow:(id)sender {
//destructiveButton 的颜色和其他按钮不同,呈现红色
//表示用户需要注意,一般用于不可逆操作
UIActionSheet *sheet=[[UIActionSheet alloc]initWithTitle:@"Hello" delegate:self cancelButtonTitle:@"OK" destructiveButtonTitle:@"此项需要用户注意" otherButtonTitles: nil];
[sheet showInView:self.view];
}
注意:如果我们开发了一款基于多标签页的程序(UITabbar),在每个标签页中显示sheet框的方法会发生不同。这时要调用“showFromTabBar”的方式来代替“showInView:aView”,否则界面的显示层次会发生问题。同样的,如果视图的底部有一条工具栏,我们可以调用“showFromToolbar”的方法来显示sheet框而不是“shwoInView:aView”.
如果显示的选择项过多,会出现滚动条选项在actionSheet
之后,同样可以使用代理方法获取用户的选择
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
id buttonSheet=[actionSheet buttonTitleAtIndex:buttonIndex];
NSLog(@"按下了%@按钮",buttonSheet);
}
显示结果如下:
2.含进度条的sheet框
我们介绍进度条的sheet框,不显示任何按钮。同样借用模态的特性达到开发的某些目的。
-(void)showProgressOnView:(UIView *)aView
{
if(!aView)
{
return;
} //sheet的创建
UIActionSheet *sheet=[[UIActionSheet alloc]initWithTitle:@"这时进度条\n\n\n" delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles: nil]; //进度条创建
UIProgressView *progress=[[UIProgressView alloc]initWithFrame:CGRectMake(0.0f, 40.0f, 220.0f, 90.0f)]; //进度条配置
progress.progressViewStyle = UIProgressViewStyleDefault;
progress.progress=0.0f;
[sheet addSubview:progress]; //起一个定时器,来更新进度条
[NSTimer scheduledTimerWithTimeInterval:0.03f target:self selector:@selector(updateProgress:) userInfo:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:progress,sheet, nil] forKeys:[NSArray arrayWithObjects:@"progress",@"sheet", nil]] repeats:YES]; [sheet showInView:self.view];
progress.center=CGPointMake(CGRectGetWidth(sheet.bounds)/, CGRectGetHeight(sheet.bounds)/);
}
NSTimer的响应函数如下:
//NSTimer的响应函数如下
-(void)updateProgress:(NSTimer *)aTimer
{
UIProgressView *progress = nil;
UIActionSheet *sheet =nil; //将定时器中有用的内容取出来
NSDictionary *dicInfo =aTimer.userInfo;
if(!dicInfo)
{
return;
} progress = [dicInfo objectForKey:@"progress"];
if(!progress)
{
return;
} //进度条满了
if(progress.progress>=3.0f)
{
sheet = [dicInfo objectForKey:@"sheet"];
//将sheet关闭
if(sheet)
{
[sheet dismissWithClickedButtonIndex: animated:YES];
}
//定时器销毁
[aTimer invalidate]; }
else
{
//进度条的速度
progress.progress+=0.01f;
}
}
显示效果如下:
3.含自定义控件的sheet框
sheet框是一个UIView的子类,因而他不仅能够提供按钮选项,一定也支持往他身上加其他功能的控件。
这次让我们加一个取值器玩一玩,比如取值器中有5个待取的城市:上海,北京,深圳,香港,天津。具体实现代码如下:
-(void)showCustomControlType:(UIView *)aView
{
//创建sheet,为picker腾出空间
UIActionSheet *sheet=[[UIActionSheet alloc]initWithTitle:@"\n\n\n\n\n\n\n\n\n\n\n" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"OK", nil];
sheet.actionSheetStyle=UIActionSheetStyleBlackOpaque; UIPickerView *picker=[[UIPickerView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 216.0f)];
picker.delegate=self;
picker.dataSource=self;
picker.showsSelectionIndicator=YES; [sheet addSubview:picker];
[sheet showInView:aView];
} -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (row) {
case :
return @"上海";
break;
case :
return @"北京";
break;
case :
return @"深圳";
break;
case :
return @"香港";
break;
case :
return @"天津";
break;
default:
return @"上海";
break;
}
} -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return ;
} -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return ;
}
运行结果如下:
IOS UIActionSheet的使用方法的更多相关文章
- iOS-提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
- iOS中的过期方法和新的替代方法
关于iOS中的过期方法和新的替代方法 1.获取某些类的UINavigationBar的统一外观并设置UINavigationbar的背景 注:方法名改了但是基本使用方法不变 + (instancety ...
- opencv直线检测在c#、Android和ios下的实现方法
opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...
- iOS开发——实用篇&提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
- iOS与HTML5交互方法总结(转)
今天小编在找技术文章的时候,发现这样一个标题:iOS与HTML5交互方法总结,怎么看着这么熟悉呢? 还以为是刚哥用了别的文章,点进去一看,原来是刚哥自己写的文章,他们转载的,而且还上了Dev St ...
- iOS UISearchController 的使用方法
iOS UISearchController 的使用方法 UISearchController 让用户在 UISearchBar 上输入搜索关键词,展示搜索结果或者进行其他操作.UISearchCon ...
- IOS常见的加密方法,常用的MD5和Base64
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- iOS与HTML5交互方法总结(修正)
摘要 看了不少别人写的博客或者论坛,关于iOS与HTML5交互方法大概主要有5种方式: 1. 利用WKWebView进行交互(系统API) 2. 利用UIWebView进行交互(系统API) 3. 苹 ...
- UIView封装动画--iOS利用系统提供方法来做转场动画
UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...
随机推荐
- mac 版本号控制工具SmartSVN7.5.4(破解版)
SmartSVN7.5.4和破解工具,下载地址:http://download.csdn.net/detail/pearlhuzhu/7407319 操作步骤: 1.在MAC上选中smartsvn-m ...
- asp.net MVC Razor 语法(3)
编程逻辑:执行基于条件的代码. If 条件 C# 允许您执行基于条件的代码. 如需测试某个条件,您可以使用 if 语句.if 语句会基于您的测试来返回 true 或 false: if 语句启动代码块 ...
- 响应式(css_media)
开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...
- 复习一下sql server的inner join left join 和right join
1.left join sql语句如下: select * from A left join B on A.aID = B.bID 结果如下:aID aNum ...
- 【WorkTile赞助】jQuery编程挑战#009:生成两个div元素互相追逐的动画
HTML页面: <!-- HTML代码片段中请勿添加<body>标签 //--> <div id="container"> <div id ...
- HTML5的绘图的支持
一.简单介绍canvas元素 <canvas.../>是HTML5新增的一个元素,该元素用于绘制图形.实际上<canvas../>只是相当于一张画布. 它除了可以指定通用属性外 ...
- Javascript闭包概念剖析
某种情况下,函数调用依然持有对其原始定义的作用域的引用,这个引用就叫做闭包. function foo(){ var a = 2; function bar(){ console.log(a); } ...
- javascript封装自定义滚动条方法,可自定义四个边框滚动条
还是根据我的个人习惯封装了一个方法 setScroll({ box :父盒子DOM对象, content : 内容盒子DOM对象, scrollall : 滚动条大盒子DOM对象, scroll : ...
- BZOJ 3231: [Sdoi2008]递归数列( 矩阵快速幂 )
矩阵乘法裸题..差分一下然后用矩阵乘法+快速幂就可以了. ----------------------------------------------------------------------- ...
- java 数组插入元素
import java.util.Arrays; public class AddArray { public static void main(String[] args) { int[] arr ...