iOS學習之UIActionSheet的使用

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.