前言
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
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) {
}