提示框(警告框)控件2:UIActionSheet

功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能。它与导航栏类似,它继承自UIView。
 
风格类型:

typedef NS_ENUM(NSInteger, UIActionSheetStyle) {

UIActionSheetStyleAutomatic        = -1,       //iOS系统自动默认的风格

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

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

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

};

属性:

@property(nonatomic,assign) id<UIActionSheetDelegate> delegate;    // 代理

@property(nonatomic,copy) NSString *title;  //标题

@property(nonatomic) UIActionSheetStyle actionSheetStyle; //风格类型

@property(nonatomic,readonly) NSInteger numberOfButtons; //按钮数量

@property(nonatomic) NSInteger cancelButtonIndex;    //取消按钮的索引

@property(nonatomic) NSInteger destructiveButtonIndex;  //红色按钮索引

@property(nonatomic,readonly) NSInteger firstOtherButtonIndex; //其他第一个按钮索引

@property(nonatomic,readonly,getter=isVisible) BOOL visible; //是否可见

方法:

※创建实例的初始化方法

- (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...("Use UIAlertController instead.”);

※添加按钮,返回它的索引

- (NSInteger)addButtonWithTitle:(NSString *)title;

※返回指定索引的按钮文字

- (NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex;

※显示在工具栏

- (void)showFromToolbar:(UIToolbar *)view;

※显示在导航栏

- (void)showFromTabBar:(UITabBar *)view;

※显示在工具栏按钮上

- (void)showFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated ;

※在指定区域和视图上显示

- (void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;

※在视图上显示

- (void)showInView:(UIView *)view;

※按钮消失

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated;

代理方法:

@protocol UIActionSheetDelegate <NSObject>

@optional

//点击一个按钮时触发的方法

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex;

// 如果没有定义的委托,我们模拟一个点击取消按钮

- (void)actionSheetCancel:(UIActionSheet *)actionSheet;

//将要显示警告框时触发的方

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet;

//已经显示提示框时触发的方法

- (void)didPresentActionSheet:(UIActionSheet *)actionSheet;

//提示框将要消失时触发的方法

- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex;

//提示框已经消失时触发的方法

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex;

@end

举例如下:类实现协议

@interface ViewController ()<UIActionSheetDelegate>

1. //实例化

    //创建提示框实例
UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"title" delegate:self cancelButtonTitle:@"cance" destructiveButtonTitle:@"destructive" otherButtonTitles:@"button1", @"button2",nil];

2. //设置风格

    //设置风格
actionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;

3. //设置代理

    //设置代理
actionSheet.delegate = self;

4. //在视图上显示

    //在视图上显示
[actionSheet showInView:self.view];

实现代理方法:

#pragma mark-<UIActionSheetDelegate>

1.点击按钮时触发事件

//点击一个按钮时触发的方法
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"actionSheet: clickedButtonAtIndex:");
}

2.取消提示框时触发的事件

// 如果没有定义的委托,我们模拟一个点击取消按钮
- (void)actionSheetCancel:(UIActionSheet *)actionSheet
{
NSLog(@"actionSheetCancel:");
}

3.提示框将要显示时触发的事件

//将要显示警告框时触发的方
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
NSLog(@"willPresentActionSheet:");
}

4.显示提示框时触发的方法

//已经显示提示框时触发的方法
- (void)didPresentActionSheet:(UIActionSheet *)actionSheet
{
NSLog(@"didPresentActionSheet:");
}

5.提示框将要消失时触发的方法

//提示框将要消失时触发的方法
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"actionSheet: willDismissWithButtonIndex:");
}

6.提示框消失时触发的方法

//提示框已经消失时触发的方法
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"actionSheet: didDismissWithButtonIndex:");
}

演示结果如下:

代理方法调用情况如下:

程序运行起来, 没有点击按钮时:

-- ::29.647 提示框UIActionSheet[:] willPresentActionSheet:

点击任意按钮时:

-- ::18.882 提示框UIActionSheet[:] actionSheet: clickedButtonAtIndex:
-- ::18.883 提示框UIActionSheet[:] actionSheet: willDismissWithButtonIndex:
-- ::19.297 提示框UIActionSheet[:] actionSheet: didDismissWithButtonIndex:

iOS:提示框(警告框)控件UIActionSheet的详解的更多相关文章

  1. 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)

    1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...

  2. iOS:提示框(警告框)控件UIAlertView的详解

    提示框(警告框)控件:UIAlertView   功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.   类型:typedef NS_ENUM(NSInte ...

  3. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  4. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

  5. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...

  6. iOS:图像选取器控制器控件UIImagePickerController的详解

    图像选择控制器:UIImagePickerController 功能:用于选取相册或相机等里面的照片. @interface UIImagePickerController : UINavigatio ...

  7. delphi控件属性大全-详解-简介

    http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...

  8. 【VB技巧】VB ListView 控件功能使用详解

    来源:http://lcx.cc/?i=494 ListView控件 在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Commo ...

  9. 转 VB ListView控件各种操作详解

    Private Sub Form_Load() ListView1.ListItems.Clear '清空列表 ListView1.ColumnHeaders.Clear '清空列表头 ListVie ...

随机推荐

  1. JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决

    设置: document.getElementById('id').style.width=value    document.getElementById('id').style.height=va ...

  2. WPS Office 2012 专业版 附正版序列号

    WPS Office 2012 专业版 附正版序列号 首先说说WPS的研发历史沿革:1988年5月,一个名叫求伯君的程序员凭借一台386电脑写出了WPS 1.0,从此开创了中文字处理时代,并迅速占领中 ...

  3. 【LOJ】 #2013. 「SCOI2016」幸运数字

    题解 最大异或和,明显是个线性基 然而还有那么多路径--那就树分治,反正点数看起来很少,就是为了让人乘上一个60的常数嘛 把一个树的点分树记录下来,然后看看询问的两个点彼此相同的最后一个父亲是谁,把这 ...

  4. http学习笔记1

    通讯的条件 学前小故事 通过这个故事,我们来理解两台电脑之间的通信,必须具备什么样的条件? 有一天啊,这个小明和小强,一个在山的这头放牛,一个在山的那头割草.但是,由于无聊,这个小明就像找对面的小强聊 ...

  5. bzoj 1452 二维树状数组

    #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...

  6. jquery控制元素的显示与隐藏

    比如要控制div的显示与隐藏,一句话就搞定了.$("#id").show()表示display:block,$("#id").hide()表示display:n ...

  7. neo4j中索引的使用

    neo4j可以对node和relationship中的属性建立索引,索引中的node(relationship)和属性对key-value为多对多的关系.一个node(relationship)可以在 ...

  8. 基于Redis实现——分布式锁与实现

    实现 使用的是jedis来连接Redis. 实现思想 获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,通 ...

  9. HDU 6071 Lazy Running (同余最短路 dij)

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  10. Dictionary<TKey,TValue>

    /* * 先将 key 和 bucket 的长度一起,经过简单的 hash 算法计算出元素应该放在哪个 bucket . * 但是,元素并不是放在 bucket 里面的,bucket 只是对元素存放位 ...