web-dev-qa-db-ja.com

「プレゼンテーションの進行中!」という警告の意味

私のプロジェクトでInstagramを統合しているとき。 imageからUIImagePickerControllerを取得しています。その後、Instagramに送信したいのですが、imageInstagram by UIDocumentInteractionControllerデリゲートメソッドpresentOptionsMenuFromRect:inView: animated: このような

[documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];

警告が表示されます警告:プレゼンテーションの進行中に<_UIDocumentActivityViewController:0x7584780>を表示しようとしています!
アプリケーションはクラッシュしていません。しかし、私は問題を抱えていません。この警告が表示される理由とその意味。私はインターネットで検索し、これに関する質問を読みましたが、答えが得られませんでした。助けて !!

42
chakshu
// Breaks
[viewController1 dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:viewController2 animated:YES completion:NULL];

// Does not break
[viewController1 dismissViewControllerAnimated:YES completion:^{
    [self presentViewController:viewController2 animated:YES completion:NULL];
}];

上記のコードのSwift 3バージョンは次のようになります。

// Breaks
viewController1.dismiss(animated: true)
present(viewController2, animated: true)

// Does not break
viewController1.dismiss(animated: true) {
    present(viewController2, animated: true)
}

上記の2番目の例の完了ハンドラーの使用に注意してください。
表示されるのはviewController2viewController1は完全に却下されました。

134
John Erck

Swift 3バージョン、ここにあります

viewController1.dismiss(animated: true, completion: {
    self.present(self.viewController1, animated: true)
})

viewController1は、表示するviewcontrollerです。

3
Micah Montoya

最初のプレゼンテーションまたは却下が完了していない間に、UIImagePickerControllerを提示または却下し、UIDocumentInteractionControllerを提示しようとしていることを意味します。

3
Timur Mustafaev

前述したように、これは、2つのモーダルウィンドウまたはポップオーバーを同時に表示しようとしていることを意味します。しかし、私の場合、このメッセージを受け取ったときにモーダルウィンドウやポップオーバーは見ていません。

私の場合のエラーの理由は次のとおりです。ポップオーバーを初めて表示するために呼び出したとき、それはポップオーバーが表示されないようにする別のエラーでしたが、どういうわけか「表示済み」状態のままです。ポップオーバーを表示する次のすべての試行は、「プレゼンテーションの進行中!」というランタイムエラーで失敗しました。

したがって、同じ状況に陥った場合は、ログを調べて、*** WebKit discarded an uncaught exception in the...で始まる最初のエラーを見つけてください。

それが誰かの時間を節約することを願っています。

1
Mike Keskinov

既にイベントを送信しているボタンを貼り付けてコピーし、新しいボタンが新しいビューを開くことになっているため、別の接続を作成し続けたため、このメッセージが表示されました。

技術的には、同時に2つのビューを開こうとしていました。

1
user2251695

やってみて.

    double delayInSeconds = 1.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

        [self performSegueWithIdentifier:@"Identifier" sender:self];

    });
1
Ar No

これは、同時に2つのViewControllerを表示していることを意味します。最初のプレゼンテーションが完了したら、デリゲートを呼び出します。

1
hayashi_leo

これは、ViewButtonを表示するためにIBActionに接続されたUIButtonを持っている場合にも発生する可能性があり、ボタンからターゲットViewControllerへのストーリーボードでセグエを作成します。

いくつかの相互作用をシフトしたときに、UIButtonからIBAction接続を削除するのを忘れたときに、これが発生していました。

IBAction接続またはセグエのいずれかを削除すると解決します。

1
axol