アクションシート(UIActionSheet)の使い方

アクションシートも先日の記事Alertメッセージの出し方 - 林檎な日々で紹介したAlertパネルのようにインスタンスを生成してshowをするだけです。
ボタンが押下されるとデリゲートメソッドを飛ぶという仕組みです。
このような便利なUIが簡単に利用できるのは開発者としてはありがたいですね。


ではサンプルコードを。


まずヘッダ部がこちら。
アクションシートで選択した後にイメージピッカーを利用するつもりなのでUIActionSheetDelegateだけでなくUIImagePickerControllerDelegateの記述もしています。
IBOutletやらが複数ありますが気にしないでください。ただ今、申請中のアプリをベースにサンプルコードとして紹介しているので・・・

@interface CameraViewController :UIViewController
	 {
		IBOutlet UIImageView *imageView_;
		IBOutlet UIActivityIndicatorView *activityIndicator_;
		IBOutlet UIBarButtonItem *photoButton_;
		IBOutlet UIBarButtonItem *saveButton_;
		UIActionSheet *photoActionSheet_;
		UIActionSheet *saveActionSheet_;
}



で、実際に表示させるところは

photoActionSheet_ = [[UIActionSheet alloc] 
                     initWithTitle:nil 
                          delegate:self 
                 cancelButtonTitle:NSLocalizedString(@"Cancel",@"ActionSheet Cancel")  
            destructiveButtonTitle:nil 
                 otherButtonTitles:buttonStringAlbums, buttonStringCamera, nil];
[photoActionSheet_ autorelease];
	
// アクションシート表示
[photoActionSheet_ showInView:self.view];

buttonStringAlbums、buttonStringCameraはNSStringです。
普通に@"ほにゃらら"と書いてもOKです。
ここではタイトル(initWithTitle)はnilとしていますが、もちろん必要に応じて@"○○機能の選択"のように記述してください。


デリゲートメソッドは

 - (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {	
  // シートの種類をチェック
  if (actionSheet == photoActionSheet_) {	// 写真のシート
    // ここに処理を記述
    switch (buttonIndex) { // 押されたボタンのインデックスをチェック
    case 0:
      break;
    case 1:
      break;
    default:
      break;
    }
   } else if (actionSheet == saveActionSheet_) {	// 保存のシート
     // ここに処理を記述
   }
}