標籤:
UIActionSheet是在iOS彈出的選擇按鈕項,可以添加多項,並為每項添加點擊事件.
使用
1.需要實現UIActionSheetDelegate 協議
@interface NJWisdomCardDetailViewController ()<UIActionSheetDelegate>@end
2.彈出選擇按鈕框
- (void)showSheet{ 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。
設定樣式,動作表單也支援三種風格:
- UIActionSheetStyleDefault //預設風格:灰色背景上顯示白色文字
- UIActionSheetStyleBlackTranslucent //透明黑色背景,白色文字
- UIActionSheetStyleBlackOpaque //純黑背景,白色文字
3.監聽項的點擊事件。實現協議裡的有相應的方法
(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{ }注意事項
在開發過程中,發現有時候UIActionSheet的最後一項點擊失效,點最後一項的上半地區時有效,這是在特定情況下才會發生,這個情境就是試用了UITabBar的時候才有。解決辦法:
在showView時這樣使用,[actionSheet showInView:[UIApplication sharedApplication].keyWindow];或者[sheet showInView:[AppDelegate sharedDelegate].tabBarController.view];這樣就不會發生遮擋現象了。
iOS UI基礎-6.0 UIActionSheet的使用