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

        //...

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM