actionSheet(上拉菜单)的实现

    技术2022-05-19  26

    必须使用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]){

            //...

        }

    }

     

     

    心得:IOS开发严格follow Model-View-Control模式,仔细想来,原因可能是为了保证人机交互的及时性,MVC可以让view变得非常独立,不受Control的影响,这样一些界面上面的动画特效就的实现不会受后台控制的yingxia,用户体验好。我猜想应该是这个原因吧。


    最新回复(0)