一看圖就明白了,毋需多說。
- UIActionSheet* mySheet = [[UIActionSheet alloc]
- initWithTitle:@"ActionChoose"
- delegate:self
- cancelButtonTitle:@"Cancel"
- destructiveButtonTitle:@"Destroy"
- otherButtonTitles:@"OK", nil];
- [mySheet showInView:self.view];
與UIAlertView類似,我們也是在委托方法里處理按下按鈕后的動作。記得在所委托的類加上UIActionSheetDelegate。
- - (void)actionSheetCancel:(UIActionSheet *)actionSheet{
- //
- }
- - (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
- //
- }
- -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{
- //
- }
- -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{
- //
- }
看到那個紅色的按鈕沒?那是ActionSheet支持的一種所謂的銷毀按鈕,對某戶的某個動作起到警示作用,
比如永久性刪除一條消息或者日志。如果你指定了一個銷毀按鈕他就會以紅色高亮顯示:
- mySheet.destructiveButtonIndex=1;
與導航欄類似,操作表單也支持三種風格 :
- UIActionSheetStyleDefault //默認風格:灰色背景上顯示白色文字
- UIActionSheetStyleBlackTranslucent //透明黑色背景,白色文字
- UIActionSheetStyleBlackOpaque //純黑背景,白色文字
用法用例:
mySheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
顯示ActionSheet有三種方法:
1.在一個視圖內部顯示,可以用showInView
[mySheet showInView:self];
2.如果要將ActonSheet 與工具欄或者標簽欄對齊,可以使用showFromToolBar或showFromTabBar
[mySheet showFromToolBar:toolbar];
[mySheet showFromTabBar:tabbar];
解除操作表單
用戶按下按鈕之后,Actionsheet就會消失——除非應用程序有特殊原因,需要用戶按下做個按鈕。用dismiss方法可令表單消失:
- [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]){
//...
}
}