IOS基础:ActionSheet(上拉菜单)的实现

一看图就明白了,毋需多说。

 

[java]  view plain copy print ?
  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]  view plain copy print ?
  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]  view plain copy print ?
  1. mySheet.destructiveButtonIndex=1;  

与导航栏类似,操作表单也支持三种风格 :

 

 

[java]  view plain copy print ?
  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]  view plain copy print ?
  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]){

        //...

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值