【Objective-C】UIAlertControllerの実装のやり方【Xcode10.1】
こういう人に向けて発信しています。
・UIAlertController(Objective-C)の実装をしたい人
・レガシーなUIAlertViewからモダンな書き方に移行したい人
・Objective-C初心者
注意:iOS8以降、UIAlertViewは非推奨になりました。
ですのでUIAlertControllerを利用して、
アラートビューを出してあげましょう。
今回用意するクラス
・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を使用した際の挙動
注意点
はじめに何も考えずにViewDidLoadに記載していたところ、
アラートビューが描画されず、Buttonタップをトリガーにした所、
動作しました。念の為ご共有です。
追記(2019.10.28)
あえてレガシーなUIAlertControllerを記載しましたが、
こちらも合わせてご確認ください。
基本的には下記記事でも紹介しております、
UIPopoverPresentaionControllerを推奨しております。