ホーム > iOS > UIAlertControllerでAssertion failureが出た。

UIAlertControllerでAssertion failureが出た。 このエントリーを含むはてなブックマーク はてなブックマーク - UIAlertControllerでAssertion failureが出た。

2015 年 5 月 2 日
*** Assertion failure in -[UIAlertController addAction:], /SourceCache/UIKit/UIKit-3347.44/UIAlertController.m:121

UIAlertView→UIAlertControllerをやっていて、こんなのが出てしばらくハマったのでメモ。
結論から言うと、styleがUIAlertActionStyleCancelのactionは2つ以上addしてはいけない。

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"タイトル"
                                                               message:@"メッセージ"
                                                        preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"キャンセル"
                                          style:UIAlertActionStyleCancel
                                        handler:^(UIAlertAction *action) {
                                          // キャンセルなんとか
                                        }]];
[alert addAction:[UIAlertAction actionWithTitle:@"OK"
                                          style:UIAlertActionStyleCancel
                                        handler:^(UIAlertAction *action) {
                                          // OKなんとか
                                        }]];

パッと見で気が付かないよ・・・。
2つめの「UIAlertActionStyleCancel」は「UIAlertActionStyleDefault」か「UIAlertActionStyleDestructive」にしましょう。
アサーションならもうちょっとメッセージに情報が欲しいなぁ。


カテゴリー: iOS タグ:
コメントは受け付けていません。