iPhone SDK開發範例大全第四章之六04a-BaseMenu(6/15):2009年11月12c日星期四
iPhone SDK開發範例大全即iPhone Developer's CookBook的中文譯本,程式可由erica網站下載。第四章講AlertView,程式共有十五個。
本文講第6個程式04a-BaseMenu(6/15),CookBook 中文譯本4-5、147~149頁(訣竅4-4)。
(A)本程式在Naviagtion Bar上有"DO It" button,click這個button即出現一個UIActionSheet,選擇Delete File、Rename File、Email File或Cancel button,如第一圖。click任一button後即跳至第八行clickedButtonAtIndex message,並印出Button的index,如下第二圖。
(B)達成pop up ActionSheet 的方法很簡單,下56行action:@selector(presentSheet)讓使用者click DoIt時跳至第14行的presentSheet。詳述presentSheet如下:
16行:UIActionSheet *menu = [[UIActionSheet alloc ] .....產生UIActionSheet 物件。
17行~21行:
- 17行~initWithTitle : (NSString *) title讓title出現在receiver的title bar。receiver是一個UIActionSheet 物件。本例title是@"File management"。
- 18行~delegate:(id) delegate,設立receiver的delegate。nil表示沒有,self表示receiver即為HelloController自己。
- 19行~cancelButtonTitle:(NSString *) cancelButtonTitle,cancel button的title,nil表示沒有cancel button。本message相當於addButtonWithTitle:。本例為@"Cancel"。
- 20行~destructiveButtonTitle:(NSString *) destructiveButtonTitle,destructiveButton的title,nil表示沒有cancel button。本message相當於addButtonWithTitle:。本例為@"Delete File"。
- 21行~otherButtonTitles:(NSString *)otherButtonTitles, ...,....表示可以有一串nil ended的(NSString *) ;本例是@"Rename File",@"Email File", nil。 本message相當於addButtonWithTitle:。
- return value:一個initialize好的UIActionSheet。
32行、[menu showInViw:self.view] :將menu show in view of self.view顯現。
同時,因conform to UIActionSheetDelegate,加了15~19行這clickedButtonAtIndex protocal的message,當使用者click OK button時會跳入此程式。說明如下。
這個程式只是在10行printf出clicked button的button index + 1,而button index從0開始,所以在gdb中顯示出:
User Pressed Button 1
User Pressed Button 2
User Pressed Button 3
User Pressed Button 4
11行[actionSheet release] release UIActionSheet。