ポップアップさせるUIAlertViewの使い方

アラートビュー(AlertView)とは

ポップアップで出てくるメッセージです。
下図のようなもので、よく見るかと思います。
alertview01

使い方・生成方法

viewDidLoad内でボタンを生成・配置し、
ボタンが押された際にポップアップさせてみます。

@implementation TestViewController

-(void)BtnPush:(UIButton*)button{
    NSLog(@"ボタンが押されました");
    
    //アラートビューの生成と設定
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"iPhoneアプリ開発大百科"
                          message:@"UIAlertViewの実験完了"
                          delegate:self
                          cancelButtonTitle:@"OK!" otherButtonTitles:nil];
    [alert show];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //ボタンの生成と配置
    //詳しくはUIButtonの説明ページを参照
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn setFrame:CGRectMake(110,210,100,40)];
    [btn setTitle:@"テストボタン" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn addTarget:self
            action:@selector(BtnPush:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)didReceiveMemoryWarning

実行すると、下図のようにポップアップします。
alertview01

上のプログラムで赤太字の部分を、
呼び出したい時に追加するだけなのでとても簡単です。

  • initWithTitle:@”◯◯”
    ◯◯にタイトルを入れます。
  • message:@”△△”
    △△にメッセージ文を入れます。
  • cancelButtonTitle:@”☆☆” otherButtonTitles:nil];
    ☆☆にアラービューを消すボタンのタイトルを入れます。

選択肢をつける方法

以下の赤字部分「otherButtonTitles〜」を付け足します。

-(void)BtnPush:(UIButton*)button{
    NSLog(@"ボタンが押されました");
    
    //アラートビューの生成と設定
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"iPhoneアプリ開発大百科"
                          message:@"UIAlertViewの実験完了"
                          delegate:self
                          cancelButtonTitle:@"OK!" otherButtonTitles:@"NO!", nil];
    [alert show];
}

これで、NO!という選択肢が生まれます。
alertview02

選択肢の数を3つ以上にしたい場合は、
[alert addButtonWithTitle:@"XXX"];
とすれば何個でも追加可能です。

-(void)BtnPush:(UIButton*)button{
    NSLog(@"ボタンが押されました");
    
    //アラートビューの生成と設定
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"iPhoneアプリ開発大百科"
                          message:@"UIAlertViewの実験完了"
                          delegate:self
                          cancelButtonTitle:@"OK!" otherButtonTitles:@"NO!", nil];
    [alert addButtonWithTitle:@"3つ目の選択肢"];
    [alert show];
}

3つ以上の場合は、下図のように縦に選択肢が並びます。
alertview03

delegeteを使ってアクションを追加する

選択肢があるからには、それを選択したときに起こすアクションを決める必要があります。
delegete(デリゲート)メソッドを使うことで選択肢が選ばれた直後に自動で呼び出すことができます。

例えば、次のようにAlertViewを用意します。

-(void)BtnPush:(UIButton*)button{
    NSLog(@"ボタンが押されました");
    
    //アラートビューの生成と設定
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"背景色の決定"
                          message:@"背景に設定したい色を選んで下さい"
                          delegate:self
                          cancelButtonTitle:@"キャンセル" otherButtonTitles:nil];
    [alert addButtonWithTitle:@"赤色"];
    [alert addButtonWithTitle:@"青色"];
    [alert addButtonWithTitle:@"黄色"];
    [alert show];
}

シミュレータで実行すると、下図のポップアップがでます。
alertview04

次にそれぞれの色を選択した際に、アプリの背景色が変わるようにします。

-(void)BtnPush:(UIButton*)button{
    NSLog(@"ボタンが押されました");
    
    //アラートビューの生成と設定
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"背景色の決定"
                          message:@"背景に設定したい色を選んで下さい"
                          delegate:self
                          cancelButtonTitle:@"キャンセル" otherButtonTitles:nil];
    [alert addButtonWithTitle:@"赤色"];
    [alert addButtonWithTitle:@"青色"];
    [alert addButtonWithTitle:@"黄色"];
    [alert show];
}

-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    
    switch (buttonIndex) {
        case 0:
            //1番目のボタン(cancelButtonTitle)が押されたときのアクション
            NSLog(@"1番目");
            break;
            
        case 1:
            //2番目のボタンが押されたときのアクション
            NSLog(@"2番目");
            self.view.backgroundColor = [UIColor redColor];
            break;
            
        case 2:
            //3番目のボタンが押されたときのアクション
            NSLog(@"3番目");
            self.view.backgroundColor = [UIColor blueColor];
            break;
            
        case 3:
            //4番目のボタンが押されたときのアクション
            NSLog(@"4番目");
            self.view.backgroundColor = [UIColor yellowColor];
            break;
    }
    
}

- (void)viewDidLoad
{

アラートビューのボタンには上から順番に「0,1,2・・・」と番号がついており、
それがデリゲートメソッドに引き渡されます。
switch文を使うことで、各番号のボタンが押されたときのアクションを振り分けることができるので便利です。

以上で実行すると、次のように背景色が変わります。
alertview05

コメントを残す

サブコンテンツ

このページの先頭へ