04a-BaseMenu(6/15)

  • warning: Declaration of views_handler_argument::init(&$view, &$options) should be compatible with views_handler::init(&$view, $options) in /home/xnvgu7/public_html/sites/all/modules/views/handlers/views_handler_argument.inc on line 745.
  • warning: Declaration of views_handler_filter::options_validate(&$form, &$form_state) should be compatible with views_handler::options_validate($form, &$form_state) in /home/xnvgu7/public_html/sites/all/modules/views/handlers/views_handler_filter.inc on line 585.
  • warning: Declaration of views_handler_filter::options_submit(&$form, &$form_state) should be compatible with views_handler::options_submit($form, &$form_state) in /home/xnvgu7/public_html/sites/all/modules/views/handlers/views_handler_filter.inc on line 585.
  • warning: Declaration of views_handler_filter_boolean_operator::value_validate(&$form, &$form_state) should be compatible with views_handler_filter::value_validate($form, &$form_state) in /home/xnvgu7/public_html/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc on line 149.
  • warning: Declaration of views_plugin_style_default::options(&$options) should be compatible with views_object::options() in /home/xnvgu7/public_html/sites/all/modules/views/plugins/views_plugin_style_default.inc on line 25.
  • warning: Declaration of views_plugin_row::options_validate($form, &$form_state) should be compatible with views_plugin::options_validate(&$form, &$form_state) in /home/xnvgu7/public_html/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.
  • warning: Declaration of views_plugin_row::options_submit($form, &$form_state) should be compatible with views_plugin::options_submit(&$form, &$form_state) in /home/xnvgu7/public_html/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.

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行:

  1. 17行~initWithTitle : (NSString *) title讓title出現在receiver的title bar。receiver是一個UIActionSheet 物件。本例title是@"File management"。
  2. 18行~delegate:(id) delegate,設立receiver的delegate。nil表示沒有,self表示receiver即為HelloController自己。
  3. 19行~cancelButtonTitle:(NSString *) cancelButtonTitle,cancel button的title,nil表示沒有cancel button。本message相當於addButtonWithTitle:。本例為@"Cancel"。
  4. 20行~destructiveButtonTitle:(NSString *) destructiveButtonTitle,destructiveButton的title,nil表示沒有cancel button。本message相當於addButtonWithTitle:。本例為@"Delete File"。
  5. 21行~otherButtonTitles:(NSString *)otherButtonTitles, ...,....表示可以有一串nil ended的(NSString *) ;本例是@"Rename File",@"Email File", nil。 本message相當於addButtonWithTitle:。
  6. 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