在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的使用方法的更多相关文章

  1. iOS-提高iOS开发效率的方法和工具

    提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...

  2. iOS中的过期方法和新的替代方法

    关于iOS中的过期方法和新的替代方法 1.获取某些类的UINavigationBar的统一外观并设置UINavigationbar的背景 注:方法名改了但是基本使用方法不变 + (instancety ...

  3. opencv直线检测在c#、Android和ios下的实现方法

    opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...

  4. iOS开发——实用篇&提高iOS开发效率的方法和工具

    提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...

  5. iOS与HTML5交互方法总结(转)

    今天小编在找技术文章的时候,发现这样一个标题:iOS与HTML5交互方法总结,怎么看着这么熟悉呢?   还以为是刚哥用了别的文章,点进去一看,原来是刚哥自己写的文章,他们转载的,而且还上了Dev St ...

  6. iOS UISearchController 的使用方法

    iOS UISearchController 的使用方法 UISearchController 让用户在 UISearchBar 上输入搜索关键词,展示搜索结果或者进行其他操作.UISearchCon ...

  7. IOS常见的加密方法,常用的MD5和Base64

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  8. iOS与HTML5交互方法总结(修正)

    摘要 看了不少别人写的博客或者论坛,关于iOS与HTML5交互方法大概主要有5种方式: 1. 利用WKWebView进行交互(系统API) 2. 利用UIWebView进行交互(系统API) 3. 苹 ...

  9. UIView封装动画--iOS利用系统提供方法来做转场动画

    UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...

随机推荐

  1. ZOJ1100 状压DP +深搜

    记得做过类似于这类题目是能够用组合数学方法来解决的,可惜淡忘了,也找不到了,看了网上的也有人提到过能够用组合公式解决,但是没人做,都是用了状压DP的方法,这个状压非常难讲清楚吧,推荐两篇 第一遍大体看 ...

  2. Objective-C中的block块语法

    #import <Foundation/Foundation.h> /* OC不同于Java C++ 它没有字符串对象 只有NS对象 NS就是乔布斯第一个公司NeXt的类集合 被收购之后才 ...

  3. Windows消息大全

    最近在写TabControl的用户控件,需要用到sendMessage,已做备份. 引用:http://bbs.aau.cn/forum.php?mod=viewthread&tid=7776 ...

  4. Linux用户及用户组管理

    Linux是个优秀的多用户多任务操作系统. 掌握Linux的用户/用户组管理是基本及必备技能之一. 简单做下总结. 无论采用图形界面的用户管理设置,还是终端的管理方式,最终目的都是对系统的用户/用户组 ...

  5. English - even though和even if用法解析

    even though和even if的用法区别两者均可用于引导让步状语从句,其细微区别是: 1. even if 引导的从句是往往是假设性的,相当于汉语的“即使”“纵然”“就算”“哪怕”. 如:Th ...

  6. 七种Prolog解释器/编译器

    http://blog.sina.com.cn/s/blog_494e45fe0100lh1v.html PROLOG 人工智能领域常用的语言,开发自然语言分析,专家系统,以及所有和智能有关的程序,都 ...

  7. hive 行转列 并添加虚列

    select regexp_extract(a.col2,'(phonenum=\")(.*?)\"',2) user_device, regexp_extract(a.col13 ...

  8. centos下zookeeper集群搭建

    单机模式: 1)  首先下载zookeeper压缩包, 这里采用zookeeper3.4.8.... wget http://mirror.bit.edu.cn/apache/zookeeper/zo ...

  9. 关于scala和java 在maven项目中混编的问题

    1.需要添加scala 相关maven配置: <properties> <scala.version>2.10.1</scala.version> <slf4 ...

  10. 智能电视TV开发---直播视频客户端结构设计和实现

    在智能电视TV开发---客户端和服务器通信里面我们实现了客户端和服务端的简单通信,接下来我们做一个简单的客户端界面,来实现手机端来操控智能电视的TV端. 一.存储视频的结构设计 我们在做客户端的时候, ...