一看图就明白了,毋需多说。
[java]
1. UIActionSheet* mySheet = [[UIActionSheet alloc]
2. initWithTitle:@"ActionChoose"
3. delegate:self
4. cancelButtonTitle:@"Cancel"
5. destructiveButtonTitle:@"Destroy"
6. otherButtonTitles:@"OK", nil];
7. [mySheet showInView:self.view];
与UIAlertView类似,我们也是在委托方法里处理按下按钮后的动作。记得在所委托的类加上UIActionSheetDelegate。
[java]
1. - (void)actionSheetCancel:(UIActionSheet *)actionSheet{
2. //
3. }
4. - (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
5. //
6. }
7. -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{
8. //
9. }
10. -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{
11. //
12. }
看到那个红色的按钮没?那是ActionSheet支持的一种所谓的销毁按钮,对某户的某个动作起到警示作用,
比如永久性删除一条消息或者日志。如果你指定了一个销毁按钮他就会以红色高亮显示:
[java]
1. mySheet.destructiveButtonIndex=1;
与导航栏类似,操作表单也支持三种风格 :
[java]
1. UIActionSheetStyleDefault //默认风格:灰色背景上显示白色文字
2. UIActionSheetStyleBlackTranslucent //透明黑色背景,白色文字
3. UIActionSheetStyleBlackOpaque //纯黑背景,白色文字
用法用例:
mySheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
显示ActionSheet有三种方法:
1.在一个视图内部显示,可以用showInView
[mySheet showInView:self];
2.如果要将ActonSheet 与工具栏或者标签栏对齐,可以使用showFromToolBar或showFromTabBar
[mySheet showFromToolBar:toolbar];
[mySheet showFromTabBar:tabbar];
解除操作表单
用户按下按钮之后,Actionsheet就会消失——除非应用程序有特殊原因,需要用户按下做个按钮。用dismiss方法可令表单消失:
[java]
1. [mySheet dismissWithClickButtonIndex:1 animated:YES];
必须使用Protocol,在类定义的地方定义使用UIActionSheetDelegate协议,
@interface XXXController : UIViewController <UIActionSheetDelegate> {...
在程序里面调用
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure?" //标题
delegate:self //此处指定处理按钮按下之后的事件的类,该类必须实现UIActionSheetDelegate协议
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"OK"
otherButtonTitles:@"button1", @"button2", nil]; //可指定很多个button,最后一个参数必须为nil,此为OBJC特殊特性
[actionSheet showInView:self.view]; //在哪个view里面弹出上拉菜单
[actionSheet release]; //一定要release
记得最后一定要release!
处理按钮事件的方法为实现UIActionSheetDelegate协议的actionSheet方法:
- (void)actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if( buttonIndex != [actionSheet cancelButtonIndex]){
//...
}
}