iOS - UIActionSheet
前言
NS_CLASS_DEPRECATED_IOS(2_0, 8_3, "UIActionSheet is deprecated. Use UIAlertController with a
preferredStyle of UIAlertControllerStyleActionSheet instead") __TVOS_PROHIBITED
@interface UIActionSheet : UIView
@available(iOS, introduced=2.0, deprecated=8.3, message="UIActionSheet is deprecated. Use
UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead")
public class UIActionSheet : UIView
按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推,起始值为 0。
ActionSheet 也可以设置 title 属性作为提示信息,一般不设置 title 看着会舒服一些。
ActionSheet 显示的时候调用的是 showInView。如果是在工具条或标签条中需要使用专门提供的其它方法。
- 工具条的情况下 [actionSheet showFromToolbar:self.navigationController.toolbar];
- 标签条的情况下 [actionSheet showFromTabBar:self.tabBar];
1、UIActionSheet 的创建
Objective-C
创建时直接添加按钮等信息
// 设置代理时,需遵守协议 <UIActionSheetDelegate>
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"请选择"
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:@"destructive"
otherButtonTitles:@"动作 1", @"动作 2", @"动作 3", nil]; // 将 actionSheet 添加到 view
[actionSheet showInView:self.view];
先创建,后添加按钮等信息
// 设置代理时,需遵守协议 <UIActionSheetDelegate>
UIActionSheet *actionSheet = [[UIActionSheet alloc] init]; actionSheet.title = @"请选择";
[actionSheet addButtonWithTitle:@"取消"];
[actionSheet addButtonWithTitle:@"动作 1"];
[actionSheet addButtonWithTitle:@"动作 2"];
[actionSheet addButtonWithTitle:@"动作 3"];
actionSheet.cancelButtonIndex = 0;
actionSheet.delegate = self; // 将 actionSheet 添加到 view
[actionSheet showInView:self.view];
Swift
创建时直接添加按钮等信息
// 设置代理时,需遵守协议 UIActionSheetDelegate
let actionSheet:UIActionSheet = UIActionSheet(title: "请选择",
delegate: self,
cancelButtonTitle: "取消",
destructiveButtonTitle: "destructive",
otherButtonTitles: "动作 1", "动作 2", "动作 3") // 将 actionSheet 添加到 view
actionSheet.showInView(self.view)
先创建,后添加按钮等信息
// 设置代理时,需遵守协议 UIActionSheetDelegate
let actionSheet:UIActionSheet = UIActionSheet() actionSheet.title = "请选择"
actionSheet.addButtonWithTitle("取消")
actionSheet.addButtonWithTitle("动作 1")
actionSheet.addButtonWithTitle("动作 2")
actionSheet.addButtonWithTitle("动作 3")
actionSheet.cancelButtonIndex = 0
actionSheet.delegate = self // 将 actionSheet 添加到 view
actionSheet.showInView(self.view)
2、UIActionSheet 的设置
Objective-C
// 设置样式
/*
// take appearance from toolbar style otherwise uses 'default'
UIActionSheetStyleAutomatic = -1, UIActionSheetStyleDefault = UIBarStyleDefault,
UIActionSheetStyleBlackTranslucent = UIBarStyleBlackTranslucent,
UIActionSheetStyleBlackOpaque = UIBarStyleBlackOpaque ,
*/
actionSheet.actionSheetStyle = UIActionSheetStyleDefault; // 设置标题
actionSheet.title = @"系统提示"; // 添加按钮
/*
需要放在 [actionSheet showInView:self]; 前才起作用
*/
[actionSheet addButtonWithTitle:@"确定"]; // 设置最下边位置的按钮
/*
设置最下边位置的按钮: 大于 0 并且 小于等于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示
在最下边位置。
等于 0 或者 大于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示在最
下边位置,并且取消最下边一个按钮和上边按钮的间隔。
*/
actionSheet.cancelButtonIndex = 4; // 获取指定位置按钮的标题
NSString *buttonTitle = [actionSheet buttonTitleAtIndex:5]; // 获取按钮的个数,只读
NSInteger numberOfButtons = actionSheet.numberOfButtons; // 获取除取消按钮外第一个按钮的索引,只读
NSInteger firstOtherButtonIndex = actionSheet.firstOtherButtonIndex; // 获取 actionSheet 是否已经显示出来,只读
BOOL alertViewVisible = actionSheet.isVisible; // 显示 actionSheet
[actionSheet showInView:self.view]; // 隐藏 actionSheet
[actionSheet dismissWithClickedButtonIndex:0 animated:YES]; // 设置代理,需遵守协议 <UIActionSheetDelegate>
actionSheet.delegate = self;
Swift
// 设置样式
/*
case Automatic // take appearance from toolbar style otherwise uses 'default'
case Default
case BlackTranslucent
case BlackOpaque
*/
actionSheet.actionSheetStyle = .Default // 设置标题
actionSheet.title = "系统提示" // 添加按钮
/*
需要放在 [actionSheet showInView:self]; 前才起作用
*/
actionSheet.addButtonWithTitle("确定") // 设置最下边位置的按钮
/*
设置最下边位置的按钮: 大于 0 并且 小于等于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示
在最下边位置。
等于 0 或者 大于按钮的总个数,按照 otherButton、cancelButton、addButtonWith 的顺序依次显示在最
下边位置,并且取消最下边一个按钮和上边按钮的间隔。
*/
actionSheet.cancelButtonIndex = 4 // 获取指定位置按钮的标题
let buttonTitle:String? = actionSheet.buttonTitleAtIndex(5) // 获取按钮的个数,只读
let numberOfButtons:NSInteger = actionSheet.numberOfButtons // 获取除取消按钮外第一个按钮的索引,只读
let firstOtherButtonIndex:NSInteger = actionSheet.firstOtherButtonIndex // 获取 actionSheet 是否已经显示出来,只读
let alertViewVisible:Bool = actionSheet.visible // 显示 actionSheet
actionSheet.showInView(self.view) // 隐藏 actionSheet
actionSheet.dismissWithClickedButtonIndex(0, animated: true) // 设置代理,需遵守协议 UIActionSheetDelegate
actionSheet.delegate = self
3、UIActionSheetDelegate 的协议方法
需遵守协议 UIActionSheetDelegate,并设置代理
Objective-C
// 将要显示,操作表显示前被调用
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet { } // 已经显示,操作表显示后被调用
- (void)didPresentActionSheet:(UIActionSheet *)actionSheet { } // 将要结束选择那个按钮,操作表关闭前被调用
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex { } // 已经结束了选择那个按钮,操作表关闭后被调用,操作表显示中应用程序进入睡眠状态时也会被调用
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { } // 点击了那个按钮,触摸操作表中的任意按钮时被调用,比 willDismissWithButtonIndex 先被调用
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { // 按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推
} // 强制关闭,操作表显示中强制关闭时被调用,例如操作表显示时应用程序突然关闭等场所
-(void)actionSheetCancel:(UIActionSheet *)actionSheet { }
Swift
// 将要显示,操作表显示前被调用
func willPresentActionSheet(actionSheet: UIActionSheet) { } // 已经显示,操作表显示后被调用
func didPresentActionSheet(actionSheet: UIActionSheet) { } // 将要结束选择那个按钮,操作表关闭前被调用
func actionSheet(actionSheet: UIActionSheet, willDismissWithButtonIndex buttonIndex: Int) { } // 已经结束了选择那个按钮,操作表关闭后被调用,操作表显示中应用程序进入睡眠状态时也会被调用
func actionSheet(actionSheet: UIActionSheet, didDismissWithButtonIndex buttonIndex: Int) { } // 点击了那个按钮,触摸操作表中的任意按钮时被调用,比 willDismissWithButtonIndex 先被调用
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) { // 按钮的 index 按照 otherButton、cancelButton、addButtonWith 的顺序依次类推
} // 强制关闭,操作表显示中强制关闭时被调用,例如操作表显示时应用程序突然关闭等场所
func actionSheetCancel(actionSheet: UIActionSheet) { }
iOS - UIActionSheet的更多相关文章
- IOS UIActionSheet的使用方法
在IOS的用户接口向导中,苹果提供了另外一种显示警告框的手法,叫做UIActionSheet.它和UIAlertView比起来不会显得过于急切和紧张.而是很温和地在继续流程之前给用户提供了诸多选择. ...
- IOS UIActionSheet(底部 弹出框的使用)
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定要注销?" delegate:self cancel ...
- Android开源项目库汇总
最近做了一个Android开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. 抽 ...
- GitHub上受欢迎的Android UI Library
GitHub上受欢迎的Android UI Library 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 Vi ...
- Android UI相关开源项目库汇总
最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个st ...
- GitHub 上受欢迎的 Android UI Library 整理二
通知 https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制https://github.com/wenmingvs/Notify ...
- 最新最全的 Android 开源项目合集
原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 ...
- wesome-android
awesome-android Introduction android libs from github System requirements Android Notice If the lib ...
- GitHub 上受欢迎的 Android UI Library整理
https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制 https://github.com/wenmingvs/NotifyUt ...
随机推荐
- php number_format()保留小数点后几位
[PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码 1 $num = 123213.666666; 2 echo sprintf("%.2f ...
- 线程属性pthread_attr_t
转:http://blog.sina.com.cn/s/blog_6dc9e4cf0100xcvk.html1. 线程属性: 使用pthread_attr_t类型表示,我 ...
- HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)
前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...
- 山东理工大学第七届ACM校赛-飞花的鱼塘 分类: 比赛 2015-06-26 10:30 43人阅读 评论(0) 收藏
飞花的鱼塘 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 一日,飞花壕在稷下湖游玩,忽然,飞花巨有了一个养鱼的想法,于是,他大手 ...
- C#递归1~100的累加
public static int Accum(int m, int n) { //对于接受的参数,要考虑m >n,m=n,m<n三种情况. if (m < n) { return ...
- python递归小疑惑
代码如下: def crawlAndGet(keyword, n): if n>0: jsondata = os.system('scrapy crawl beijing -a store_di ...
- boost库学习之regex
一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...
- Entity Framework 第七篇 简化排序
上篇介绍了EF的分页实现,分页的时候会用到排序,但是使用起来表达式写的似乎很繁琐 , ); 如果直接使用排序字符串,不更直观简便么? respository.GetPaged<S_Users&g ...
- Java线程池与java.util.concurrent
Java(Android)线程池 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行 ...
- 修改Netbeans默认使用UTF-8编码
NetBeans是一款优秀的开源集成开发环境,可以用于Java,C/C++,PHP等语言的开发.同时它也是一个可扩展的开发平台,可以通过插件来扩展官方版本没有的功能.自从被Oracle这个开源杀手收购 ...