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



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

    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。

    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支持的一种所谓的销毁按钮,对某户的某个动作起到警示作用,

    比如永久性删除一条消息或者日志。如果你指定了一个销毁按钮他就会以红色高亮显示:

    1. mySheet.destructiveButtonIndex=1;  

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

    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方法可令表单消失:

    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]){

            //...

        }

    }

  • 相关阅读:
    【Mysql】了解Mysql中的启动参数和系统变量
    【Mysql】初识MySQL
    【分布式搜索引擎】Elasticsearch之开启Elasticsearch的用户名密码验证
    SpringBoot------整合MyBatis
    SpringBoot------自定义拦截器
    SpringBoot------Servlet3.0的注解自定义原生Listener监听器
    SpringBoot------Servlet3.0的注解自定义原生Servlet
    SpringBoot------拦截器Filter的使用
    SpringBoot------如何将项目打成war包
    SpringBoot------Maven Install报错
  • 原文地址:https://www.cnblogs.com/martin1009/p/2561362.html
Copyright © 2020-2023  润新知