iPhone アクションシートを利用する

iPhoneアプリ開発で、今日はアクションシートの使い方を覚えたので、ブログにも書いておきたいと思います。どっかに書かないと忘れてしまうものでwww。

iPhoneアプリで使われるアクションシートとは、以下のようなものです。
<<アクションシート例>>

ボタンクリックや何かのイベントに良く現れて、ユーザーに次のアクションを選択させる事のできるインターフェースです。

このアクションシートを利用するには以下のクラスを利用します。
○ UIActionSheet
 ・・・アクションシートを表現するクラス
○ UIActionSheetDelegate
 ・・・アクションシートのデリゲートクラス。

アクションシートを作成し開くコードは以下です。

UIActionSheet *sheet = [[UIActionSheet alloc]
               initWithTitle:@"Choose" 
                     delegate:self 
       cancelButtonTitle:@"Cancel" 
destructiveButtonTitle:nil 
       otherButtonTitles:@"save", @"mail", @"upload", nil];

[sheet showInView:self.view];
[sheet release];

引数の設定内容は引数の名前の通りです。表示したいボタンは、otherButtonTitlesに指定します。destructiveButtonTitleは「破壊的ボタン名」という日本語訳となるでしょうか、特にユーザーに注意を促したいボタン名を指定します。destrukctiveButtonTitleは赤色でボタンが表示されます。

アクションシートを閉じるコードは以下です。

[actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];

アクションシートのボタンが押された際に何か処理を行いたい場合には、「UIActionSheetDelegate」の「actionSheet:clickedButtonAtIndex:」メソッドをオーバーライドします。実装例は以下です。

- (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
	[actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];	
	switch (buttonIndex) {
		case 0: // save
			[self save];
			break;
		case 1: // mail
			[self mailImage];
			break;
		case 2: // upload
			[self upload];
			break;
		default:
			break;
	}
}

ここでは、アクションシートを閉じた後に、ボタンに応じた動作をさせるメソッドを呼び出しています。buttonIndexは、アクションシートに表示されたボタンの上から「0, 1, 2 ,・・・」となります。

以上、カンタンな使い方メモでした。