2016-09-16 7 views
1

私は、アクションシートを提示する必要がある提示(モーダル)ビューコントローラーを持っています。私はこれを行うとき、しかし:モーダルビューコントローラでUIAlertControllerを使用できますか?

UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

... 

[self presentViewController:actionSheet animated:YES completion:nil]; 

を私はこれを取得:

Warning: Attempt to present <UIAlertController: 0x7fed4a608120> on <MyViewController: 0x7fed4d1ca520> which is already presenting (null) 

は、ここでは回避策はありますか?表示されたビューコントローラからアラートやアクションシートを使用するのはかなり一般的なシナリオのようです。

+0

、あなたの質問にコードを呼び出すようにしようとしていますか?より多くのコンテキストを表示します。 – rmaddy

+0

@rmaddy提示されたView Controller上でボタンが押されたときです。 – soleil

+0

これはうまくいくはずです。問題はここにはない。アクションシートを提示するモーダルを提示するサンプルプロジェクトを作成することができます。それが失敗する場合は、コードを投稿してください。 –

答えて

0

私はあなたが表示コントローラを提示してviewDidLoadからアクションシートを表示しようとしていると思います。コントローラーのビューがまだロードされていないので、アクションシートをコントローラーに表示しないのはこのためです。だからあなたがそうしている場合は、あなたのvoewDidAppearメソッドのアクションシートを表示するためにそれらのコードを書いてください、それはあなたが期待どおりにアクションシートを表示します。

ここにコードスニペットがあります。私はそれを試して、それは働いています。

コード:

- (void)viewDidAppear:(BOOL)animated 
{ 
    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"Hello" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

    UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 

    }]; 

    [actionSheet addAction:ok]; 

    [self presentViewController:actionSheet animated:YES completion:nil]; 

} 

ハッピーコーディング...

関連する問題