UIAlertControllerの取り扱い
公開日:
:
最終更新日:2015/01/26
Tips iOS8, UIAlertController
旧聞ですが日本語版のStackOverflowが始動したようですね。
個人的な印象は「フィルタされてるけど内実は知恵袋系サイト見てるのと変わらないな・・・」という感じでした。時間が経過してこなれたらまた変わってくると思いますが、当面はStackoverflowでノウハウを拾う日が続きそうです。
さて、本題はiOS8で追加されたUIAlertControllerの使い方です。
概ねQuiitaのまとめ(下記「参考サイト」)で事足りるかな・・・と思ったんですが、UIBarButtonItemからの表示をする方法がないので難儀しました。
その部分をstackoverflowからの情報で補った、表示コードのサンプルを掲載しておきます。
// UIAlertControllerの初期化 // preferredStyleにはUIAlertControllerStyleAlertもある(アラートの表示) UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; // UIAlertの「ボタン」にあたるアクションを追加。ブロック構造でボタン押下時の挙動を設定 // iOS7以前と動作を共用したい場合は「ボタンをおした時のメソッドを実行する」というブロックを用意するとよい // キャンセルボタンはstyleをUIAlertActionStyleCancelとして、handlerをnilで追加 [alert addAction:[UIAlertAction actionWithTitle:@"ボタンのタイトル" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){ // ここにボタンをおした時のアクションを入れる }]]; // UIBarButtonから表示させる場合 alert.popoverPresentationController.barButtonItem = (UIBarButtonItem); // UIButtonなど、通常のViewから表示させる場合 // alert.popoverPresentationController.sourceView = (UIView*); // alert.popoverPresentationController.sourceRect = (UIView*).bounds; // 表示 [self presentViewController:alert animated:YES completion:nil];
この部分に限ってiOS7以前(UIAlertControllerを使えるかどうか)を判別したい場合は、
Class class = NSClassFromString(@"UIAlertController");
を使って、classがnilかどうかをif文でチェックするといいでしょう(if (class) { … } else { … }という構文になると思います)。
参考サイト
[Qiita]
UIAlertControllerをiPadで使用する際の注意点
[stackoverflow]
presenting UIAlertController from a toolbar button
関連記事
-
AVAudioPlayerの初回再生遅延
ちょっとした効果音の再生にAVAudioPlayerを使っているのですが、どうも初回の効果音ロードの
-
Realmで==ができなかった
最近Realm Swiftを使ってて、引っかかったところがあるのでメモ。 Realmのオブジェクト
-
UIActionSheetの文字がブレて多重表示される
UIActionsheetを使っていて、iOS7/iPadの組み合わせで起こる不具合らしき挙動が起こ
-
iOS8のシミュレーターでLocalizationのテストをする
iOS8.1のシミュレーターでは、従前できていたシミュレーター内での「設定」(Setting)からの
-
コードでiPhone6 Plusを識別する簡単な方法
表題の通り、コードでiPhone6 Plusを識別する簡単な方法です。 iPhone6 Plu
-
bitbucketをXcode5で使用する
bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
ソースコードからStoryboardにアクセスする
複数のStoryboardを利用して、自分以外のStoryboardに遷移させるような展開をしたい場
-
Xcode5.1のInterfaceBuilderにおける地味な変更点
iOS7.1に合わせてXcode5.1がリリースされました Xcode Release N
-
画面回転をしたあとに、UITextViewの先頭を表示する
回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)