アクションシート(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_) { // 保存のシート // ここに処理を記述 } }