iOS:提示框(警告框)控件UIActionSheet的详解

简介:

提示框(警告框)控件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:");
}
复制代码

 

演示结果如下:

 

 

代理方法调用情况如下:

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

2015-09-30 19:34:29.647 提示框UIActionSheet[3866:212744] willPresentActionSheet:

点击任意按钮时:

复制代码
2015-09-30 19:35:18.882 提示框UIActionSheet[3866:212744] actionSheet: clickedButtonAtIndex:
2015-09-30 19:35:18.883 提示框UIActionSheet[3866:212744] actionSheet: willDismissWithButtonIndex:
2015-09-30 19:35:19.297 提示框UIActionSheet[3866:212744] actionSheet: didDismissWithButtonIndex:
复制代码

 

 

 

 

 

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS初级

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4850127.html,如需转载请自行联系原作者
相关文章
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
83 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
114 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
516 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
169 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
157 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
217 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
191 0
|
程序员 API Android开发
iOS开发:简单的Toast提示框实现
博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧。iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自带的提示框不是每种情况都适用的。
749 0
iOS开发:简单的Toast提示框实现
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
447 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
292 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法