UIAlertView(ダイアログ)

確認や, 選択などに利用するダイアログを表示させるUIAlertViewについてです

方式

利用用途とコードの書き方は2つあります

  1. 確認のためのダイアログ(メッセージやエラーなど)後処理が必要ない
  2. 選択などで後処理が必要

簡単に区分けすると,

後処理が必要ない場合

ダイアログを表示するためのコードを書きます

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message"
                                                    message:@"Hello"
                                                   delegate:nil
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"OK", nil];
[alert show];

“OK”ボタンをひとつ用意しました
これは表示, 確認のためだけで選択もなければ後処理もありません

後処理が必要な場合

ダイアログを表示するだけでなく, UIAlertViewDelegateの, -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndexを実装します。そして
, UIAlertViewのインスタンスにひもづけます

ダイアログの表示

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Delete Message" 
                                       message:@"Do you want to delete?"
                                       delegate:self 
                                       cancelButtonTitle:@"No"
                                       otherButtonTitles:@"OK", nil];

[alert show];

先ほどと違うのは, delegateを指定していることと, cancelButton, otherButtonに名前を入れていることです
これでボタン2つになります。さらに必要な場合は, otherButtonTitlesのところに追加します
次はボタンごとの処理を実装します, UIAlertViewDelegate の実装です

後処理

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    switch (buttonIndex) {
        case 0:
            NSLog(@"Cancel delete");
            break;
        case 1:
            NSLog(@"Yes delete it");
            [self closePopup];
            break;
        default:
            break;
    }
}

ボタンインデックスごとに処理を書きます。Cancelが0です。ボタンを増やせばインデックスは増えます。