01b-MultiLineAlert

iPhone SDK開發範例大全第四章之三01b-MultiLineAlert(3/15):2009年11月12日星期三

iPhone SDK開發範例大全即iPhone Developer's CookBook的中文譯本,程式可由erica網站下載。第四章講AlertView,程式共有十五個。

本文講第3個程式01b-MultiLineAlert,CookBook 中文譯本4-2、142~144頁(訣竅4-1)。

(A)本程式在Naviagtion Bar上有"DO It" button,click這個button即出現一個有三個button的Alert View(如上圖),click任何一個button,都會顯示相對的index在gdb上(如下圖)。

(B)達成pop up Alert View 的方法很簡單,下47行action:@selector(presentSheet)讓使用者click DoIt時跳至第19行的presentSheet。詳述presentSheet如下:

21行:UIAlertView *baseAlert = [[UIAlertView alloc ] .....產生UIAlertView 物件。

22行~24行:

  1. 22行~initWithTitle : (NSString *) title讓title出現在receiver的title bar。receiver是一個UIAlertView 物件
  2. 22行~message: (NSString *)message讓title下有更多說明,本例是@"Please select a button "。
  3. 23行~delegate:(id) delegate,設立receiver的delegate。nil表示沒有,self表示receiver即為HelloController自己。
  4. 23行~cancelButtonTitle:(NSString *) cancelButtonTitle,cancel button的title,nil表示沒有cancel button。本message相當於addButtonWithTitle:。
  5. 24行~otherButtonTitles:(NSString *)otherButtonTitles, ...,....表示可以有一串nil ended的(NSString *) ;本例是otherButtonTitles:@"One", @"Two","Three", .... nil。 本message相當於addButtonWithTitle:。
  6. return value:一個initialize好的Alert View。

26行、[baseAlert show] : 用animation來顯示receiver。Alert View是以modal view方式顯現。

同時,因conform to UIAlertViewDelegate,加了15~19行這clickedButtonAtIndex protocal的message,當使用者click OK button時會跳入此程式。說明如下。

這個程式只是在14行printf出clicked button的button index + 1,因為只有OKbutton,而button index從0開始,所以在gdb中顯示出:

User Pressed Button 1

User Pressed Button 2

User Pressed Button 3

15行[alertView release] release alertView。

receiver自動dismiss。

要注意第4行的setNumberOfRows程式。