見出し画像

【Objective-C】UIAlertControllerの実装のやり方【Xcode10.1】

こういう人に向けて発信しています。
・UIAlertController(Objective-C)の実装をしたい人
・レガシーなUIAlertViewからモダンな書き方に移行したい人
・Objective-C初心者

注意:iOS8以降、UIAlertViewは非推奨になりました。

ですのでUIAlertControllerを利用して、
アラートビューを出してあげましょう。

今回用意するクラス

・ViewController.h
・ViewController.m

上記クラスのみです。
ボタンを押下したら下記画像のようなアラートビューが
立ち上がるようにします。

画像1

ViewController.h

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end

ViewController.m

#import "ViewController.h"
#import "popOverViewController.h"

//デリゲートの採用はしておく。
@interface ViewController ()
@end

@implementation ViewController{
    UIButton *nextVCBtn;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initButton];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)initButton{
    nextVCBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, self.view.bounds.size.height/2 + 50.0f, self.view.bounds.size.width, 10.0f)];
    [nextVCBtn setTitle:@"アラートビュー展開" forState:UIControlStateNormal];
    [nextVCBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    // ボタンがタッチダウンされた時にnextViewメソッドを呼び出す
    [nextVCBtn addTarget:self action:@selector(tappedButton:)
        forControlEvents:UIControlEventTouchDown];
    
    [self.view addSubview:nextVCBtn];
}

- (IBAction)tappedButton:(id)sender {
    [self initAlertController];

}

-(void)initAlertController{
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"UIAlertControllerStyle.Alert" message:@"iOS8" preferredStyle:UIAlertControllerStyleAlert];
    
    // addActionした順に左から右にボタンが配置されます
    [alertController addAction:[UIAlertAction actionWithTitle:@"はい"
                                                        style:UIAlertActionStyleDefault
                                                      handler:^(UIAlertAction *action) {
                                                          // otherボタンが押された時の処理
                                                      }]];
    
    [alertController addAction:[UIAlertAction actionWithTitle:@"いいえ"
                                                        style:UIAlertActionStyleDefault
                                                      handler:^(UIAlertAction *action) {
                                                          // cancelボタンが押された時の処理
                                                      }]];
    
    [self presentViewController:alertController animated:YES completion:nil];
}

@end

謝辞

こちらのサイトを参考に書かせていただきました。
https://qiita.com/Night___/items/f2877236a4182c566eed#ios8で廃止されるuialertviewを使用した際の挙動

注意点

はじめに何も考えずにViewDidLoadに記載していたところ、
アラートビューが描画されず、Buttonタップをトリガーにした所、
動作しました。念の為ご共有です。

追記(2019.10.28)

あえてレガシーなUIAlertControllerを記載しましたが、
こちらも合わせてご確認ください。

基本的には下記記事でも紹介しております、
UIPopoverPresentaionControllerを推奨しております。


いいなと思ったら応援しよう!