2013年5月23日木曜日

UIActionSheetの表示

AlertViewのほかにActionSheet(下からべろっとでてくるやつ)でユーザーに決定や選択を促すことができます。



簡単なプログラムを作ってみます。まずはStoryboardにTextFieldとButtonを貼り付けます。(やり方はこの記事)
そしてヘッダーファイル(この場合ViewController.h)の@interfaceと@endの間に以下の記述をします。前回の記事で書いたようにActionSheetのオブジェクトを作ります。その準備としてまずUIActionSheet型のクラスを宣言します。(クラスとオブジェクトは厳密には違うけどめんどくさいのでだいたい同じものとして扱います)

{ UIActionSheet *action; }

次にactionを生成(インスタンス化)します。これはソースファイル(ViewController.m)に記述します。大体UIAlertViewと同じ。
とりあえず- (IBAction)inputbtn:(id)sender {}の中に書いてみる。

//生成(メモリ確保)
action =[[UIActionSheet alloc]
//ActionSheetのタイトル
initWithTitle:@"OK?" 
//デリゲート先
delegate:self
//キャンセルボタンのタイトル
cancelButtonTitle:@"Cancel"
//入力内容消去などの影響のある選択肢のボタン
destructiveButtonTitle:@"delete"
//その他のボタンのタイトル
otherButtonTitles:@"submit", nil];

ActionSheetを表示するメソッドはこちら。

[action showInView:self.view];

実行してButtonを押してみると


こんな感じ。

今回は、ボタンを押したときのメソッドを組み込む(もちろんUIAlertViewでも使用できる)。ソースファイルの@implementationと@endの間の空いてるところに以下のコードを書く。

//ActionSheetのデリゲートメソッド。最初の引数にAcrionSheet名を指定。 -(void)actionSheet:(UIActionSheet*)action 
//2つめの引数にはボタンの番号が代入される(上から順番)。 
clickedButtonAtIndex:(NSInteger)buttonAtIndex { 
       //switch文で場合分け 
       switch (buttonAtIndex) 
       { 
         case 0: 
           //NSLog。XCodeの出力ウィンドウに出力する 
           NSLog(@"button 0"); 
           break; 
         case 1: 
           NSLog(@"button 1"); 
           break; 
         case 2: 
           NSLog(@"button 2"); 
           break; 
         default: 
           break; 
       } 
}

でもっかい実行してActionSheetのボタンを押すと、XCodeの下の方にある出力ウィンドウに

こんな感じで出力される。

0 件のコメント:

コメントを投稿