UIActionSheet用来创建一个操作表,它的初始化代码如下:

- (IBAction)testActionSheet:(id)sender
{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"选择操作"
delegate:self
cancelButtonTitle:@"取消操作"
destructiveButtonTitle:@"清空数据(无法恢复)"
otherButtonTitles:@"保存数据", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
//[actionSheet showInView:self.view];
[actionSheet showFromRect:[(UIButton *)sender frame] inView:self.view animated:YES];
}

调用该方法后,会产生如下界面:

参数说明:
initWithTitle --- 初始化操作表并设置出现在操作表顶端的标题
delegate --- 指定将作为操作表委托的对象。如果不需要响应任何操作,可设置为nil
cancelButtonTitle --- 操作表中默认按钮的标题
destructiveButtonTitle --- 显示一个破坏性按钮,该按钮呈亮红色显示,一般用来提示将导致信息丢失的操作。如果设置为nil,将不会显示
otherButtonTitles --- 操作表中额外按钮的标题,是一个数组,以nil结尾

actionSheet.actionSheetStyle用来定义操作表的外观,有4种样式可供选择:
UIActionSheetStyleDefault --- 由iOS决定的操作表默认外观
UIActionSheetStyleAutomatic --- 如果屏幕底部有按钮栏,则采用与按钮栏匹配的样式
UIActionSheetStyleBlackOpaque --- 不透明的深色样式
UIActionSheetStyleBlackTranslucent --- 半透明的深色样式

显示操作表与显示提醒视图不同,操作表可与给定的视图、选项卡栏或工具栏相关联。操作表出现在屏幕上时,将以动画方式展示它与这些元素的关系。

[actionSheet showInView:self.view]是在当前控制器的视图打开操作表。如果有工具栏或选项卡栏,可使用方法showFromToolbar或showFromTabBar让操作表看起来是从这些用户界面元素中打开的。

响应操作类必须遵守协议UIActionSheetDelegate并实现方法actionSheet:clickedButtonAtIndex。

首先在类的头文件(.h)里声明为遵守UIAlertViewDelegate协议:

@interface ViewController : UIViewController <UIAlertViewDelegate>

然后实现方法actionSheet:clickedButtonAtIndex:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *strTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
NSLog(@"button title is %@",strTitle);
NSLog(@"cancel button's index is %d",[actionSheet cancelButtonIndex]);
NSLog(@"destructive button's index is %d",[actionSheet destructiveButtonIndex]);
}

在iPad中,不应在视图上显示操作表。Apple用户界面指南指出,必须在弹出框中显示操作表。弹出框(popover)是一种独特的用户界面元素,在用户触摸某个屏幕元素时出现,并通常在用户触摸背景时候消失。弹出框还包含一个小箭头,指向触发它的UI元素。为符合Apple的要求,即操作表必须显示在弹出框中,可使用方法showFromRect:inView:animated来显示一个包含操作表的弹出框。其中第一个参数(showFromRect)指定了屏幕上的一个矩形区域,弹出框的箭头将指向它。为正确设置该参数,可使用sender变量(这里是一个UIButton对象)的frame属性。参数inView指定了操作表/弹出框将显示在其中的视图(这里设置为self.view)。而参数animated是一个布尔值,指定是否以动画方式显示。

当您在iPad上运行该应用程序时,操作表将包含在一个弹出框中;而在iPhone上运行时,将忽略额外的参数,就像使用方法showInView那样显示操作表。

对于操作表,需要指出的最后一点是,当您在iPad上弹出框中显示操作表时,将自动忽略取消按钮。这是因为触摸弹出框的外面与单击取消按钮的效果相同,因此这个按钮是多余的。

创建操作表(UIActionSheet)的更多相关文章

  1. 操作表查询&操作表创建&操作表删除&操作表修改

    2.操作表 C(create):创建 语法: create table 表明( 列名1 数据类型1, 列名2 数据烈性2, .... 列名n 数据类型n ); create table Student ...

  2. UIAlertView与UIActionSheet

    1.UIAlertView(警告框) 1.1 创建警告框,设置样式 - (IBAction)alertView:(UIButton *)sender {//创建button按钮 //创建警告框的实例 ...

  3. ios9基础知识(UI)总结

    UIWindow.UILabel.UIColor.UIScreen.UIViewController.UIView.UIControl.UIButton.IBOutlet.IBAction.UISte ...

  4. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  5. MyBatis知多少(20)MyBatis读取操作

    上篇展示了如何使用MyBatis执行创建操作表.本章将告诉你如何使用MyBatis来读取表. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT ...

  6. 设计师眼中功能强大的Xcode

    作为设计师,不仅要能创造出移动为先的新产品,更要了解能创造出优秀移动作品的工具.这个实现过程可以让我们的设计更加优秀. 过去两个月,我每天在 Xcode 上花费的时间大约有 10 个小时,我学到了很多 ...

  7. UIView用户事件响应

    UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为 ...

  8. eclipse中myBatis引入

    1.添加config.xml配置文件 2.定义与数据库的数据实体映射类 3.创建操作表的是sql映射文件 即:mapper.xml 4.在配置文件config.xml中注册sql映射文件(步骤三创建的 ...

  9. 1006-HBase操作实战(JAVA API状态)

    一.准备阶段 开发环境: hadoop: hadoop -2.4.0 hbase: hbase -0.94.11-security eclipse:Juno Service Release 2 二.创 ...

随机推荐

  1. Google guava 中的Monitor

    synchronized 自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码.Java提供了同步关键字synchronized来实 ...

  2. ② 设计模式的艺术-02.简单工厂(Simple Factory)模式

    工厂模式 实现了创建者和调用者的分离. 详细分类:简单工厂模式.工厂方法模式.抽象工厂模式 面向对象设计的基本原则 OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对 ...

  3. 23、Xpath

    1.什么是Xpath?1.XPath即为XMLPath的简称,它是一种用来确定XML文档中某部分位置的语言.2.HTML可以看做是XML的一种实现,所以selenium用户可以使用这种强大的语言在we ...

  4. 继电器是如何成为CPU的(1)【转】

    转自:http://www.cnblogs.com/bitzhuwei/p/from_relay_to_tiny_CPU.html 阅读目录(Content) 从电池.开关和继电器开始 用继电器做个与 ...

  5. iTextSharp之pdfRead(两个文件文本内容的比较,指定页数的pdf截取,水印的添加)

    using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; using System; us ...

  6. Python下urllib2应用

    #coding=utf-8 import urllib,urllib2 url = 'http://www.xxx.com' values = {'wd' : 'python', 'language' ...

  7. NFS挂载报如下错误信息:mount.nfs: Stale NFS file handle解决

    1)用fuser杀掉占用那个目录的进程 linux:~ # fuser -k /home/msgplus/msgplus/remote_dir 2)强制umount linux:~ # umount ...

  8. WebService初识

    Web service 是一种跨编程语言和跨操作系统平台的远程调用技术,即跨平台远程调用技术.也就是说,不管是J2EE架构,还是.net架构 只要按照规范就可以进行通信,实现数据交互等. 这里说的&q ...

  9. Windows: 如何配置IPv6隧道

    清空隧道配置: netsh interface ipv6 set teredo disable netsh interface ipv6 6to4 set state disable netsh in ...

  10. Nginx 原理篇

    前言 在学习 Nginx 之前,我们首先有必要搞清楚下面几个问题: 1. Web服务器是怎么工作的? 2. Apache 与 Nginx 有何异同? 3. Nginx 工作模式是怎样的? 下面就围绕这 ...