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
関連記事
-
-
CALayerの管理
CALayerはNSKeyValueCodingを実装している(Core Animation Ext
-
-
GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法
情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス
-
-
UIButtonのタイトル変更時のチラつき抑制
久しぶりにXcode+Objective-Cでアプリを作っていたら、UIButtonのタイトルを動的
-
-
UISplitViewControllerの仕切り線の色を設定
UISplitViewControllerで、iPadを横向き(Landscape)にしたときの2つ
-
-
bitbucketをXcode5で使用する
bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、
-
-
Bitbucketの画面の日本語化/コミット時に同時プッシュを行う
前回の記事の続きで、Bitbucketの画面の日本語化と、Xcodeでコミットするときに同時にpus
-
-
UIAutomation関連覚書
割りと忘れがちなので、自分用備忘録を兼ねて、UIAutomationに関連するtips的なものをまと
-
-
Xcode8で余計なログを抑制する
Xcode8に更新してから、妙にログが増えたので、NSLogで明示したのと実行時エラー以外のログを吐
-
-
ENMLからHTMLへの変換
最近EvernoteAPIをいじっているので、コレに関するノウハウをとりあえず断片的に引っかかったと
