🦔

【Objective-C】UIAlertControllerの実装のやり方【Xcode11】

2020/09/29に公開

こういう人に向けて発信しています。

・UIAlertController(Objective-C)の実装をしたい人
・レガシーなUIAlertViewからモダンな書き方に移行したい人
・Objective-C初心者

注意:iOS8以降、UIAlertViewは非推奨になりました。
また、現在ではUIAlertControllerではなく
UIPopoverPresentaionControllerを推奨しております。

改修で必要な知識としてUIAlertControllerで表示したい場合はご利用ください。
UIPopoverPresentaionControllerの記事は文末で紹介しております。

今回用意するクラス

・ViewController.h
・ViewController.m

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

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を使用した際の挙動

追記(2019.10.28)

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

基本的には下記記事でも紹介しております、
UIPopoverPresentaionControllerを推奨しております。
https://zenn.dev/articles/70c803c72c6efc8d2367/edit

本記事含め他の記事は「長時間1人で悩んで不安やストレスフルな方を解決したい」という一心で更新しております。少額でも構いませんのでサポートしていただけますと記事更新のモチベーションになりますので、御援助いただけますと助かります。

Discussion