UIActionSheet是在IOS彈出的選擇按鈕項,可以添加多項,並為每項添加點擊事件。
為了快速完成這例子,我們開啟Xcode 4.3.2, 先建立一個single view application。然後再xib檔案添加一個button,用來彈出sheet view。
1、首先在.h檔案中實現協議,加代碼的地方在@interface那行的最後添加<UIActionSheetDelegate>,協議相當於java裡的介面,實現協議裡的方法。
@interface sheetviewViewController : UIViewController<UIActionSheetDelegate>@end
2、添加button,命名button為showSheetView.
3、為button建立Action映射,映射到.h檔案上,事件類型為Action ,命名為showSheet。
4、在.m檔案上添加點擊事件代碼
圖的效果是這樣的:
- (IBAction)showSheet:(id)sender { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"title,nil時不顯示" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"確定" otherButtonTitles:@"第一項", @"第二項",nil]; actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; [actionSheet showInView:self.view];}
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//設定樣式
參數解釋:
cancelButtonTitle destructiveButtonTitle是系統自動的兩項。
otherButtonTitles是自己定義的項,注意,最後一個參數要是nil。
[actionSheet showInView:self.view];這行語句的意思是在當前view顯示Action sheet。當然還可以用其他方法顯示Action sheet。
對應上面的圖和代碼,一目瞭然了把
5、接下來我們怎麼相應Action Sheet的選項的事件呢?實現協議裡的方法。為了能看出點擊Action sheet每一項的效果,我們加入UIAlertView來做資訊顯示。下面是封裝的一個方法,傳入對應的資訊,在UIAlertView顯示對應的資訊。
-(void)showAlert:(NSString *)msg { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Action Sheet選擇項" message:msg delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil]; [alert show];}
那相應被Action Sheet選項執行的代碼如下:
(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ if (buttonIndex == 0) { [self showAlert:@"確定"]; }else if (buttonIndex == 1) { [self showAlert:@"第一項"]; }else if(buttonIndex == 2) { [self showAlert:@"第二項"]; }else if(buttonIndex == 3) { [self showAlert:@"取消"]; } }- (void)actionSheetCancel:(UIActionSheet *)actionSheet{ } -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{ } -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{ }
可以看到 buttonIndex 是對應的項的索引。
看到那個紅色的按鈕沒?那是ActionSheet支援的一種所謂的銷毀按鈕,對某戶的某個動作起到警示作用,
比如永久性刪除一條訊息或映像時。如果你指定了一個銷毀按鈕他就會以紅色高亮顯示:
actionSheet.destructiveButtonIndex=1;
與導覽列類似,動作表單也支援三種風格 :
UIActionSheetStyleDefault //預設風格:灰色背景上顯示白色文字
UIActionSheetStyleBlackTranslucent //透明黑色背景,白色文字
UIActionSheetStyleBlackOpaque //純黑背景,白色文字
用法:
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;//設定樣式
我選sheet 裡的第一項,顯示如下:
6、注意事項,在開發過程中,發現有時候UIActionSheet的最後一項點擊失效,點最後一項的上半地區時有效,這是在特定情況下才會發生,這個情境就是試用了UITabBar的時候才有。解決辦法:
在showView時這樣使用,[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
或者[sheet showInView:[AppDelegate sharedDelegate].tabBarController.view];這樣就不會發生遮擋現象了。
代碼擷取:http://download.csdn.net/detail/totogo2010/4343267