メニュー
解決済
回答
1
swift Swift ios iOS Warning: Attempt to present on while a presentation is in progressのエラー

2016年11月2日 12:56

画面遷移時に下記のエラーが表示されるようになってしまいました。

Warning: Attempt to present <ViewController: xxxxxx> on <HogeViewController: zzzzzzz> while a presentation is in progress

もっと具体的にいうと、モーダル表示しているカスタムのビューからのイベントで、モーダル画面をdismissで閉じるタイミングで、モーダル表示元のViewControllerに対してdeletate通知をして、そこでpresentで他の画面を表示させようとすると当該エラーが表示されます。

環境

  • Mac OS 10.12(Sierra)
  • Xcode 8
  • Swift 3.0

    Ryosuke 6か月 ago  

    このエラーは下記の状態のときに起きるようです。

    • dismissanimation:trueで実行している
    • 画面を閉じるアニメーションのタイミングで呼び出し元でpresentメソッドで新しい画面を表示させようとしている

    なので、dismissのアニメーションが完了したタイミングでprezentを呼び出せばエラーは出なくなります。

    色々やりかたがあるかと思いますが、sleepメソッドで0.5秒ほど停止してからprezentを実行すればいいと思います。

    モーダル呼び出し元のViewController

        func デリゲートメソッド() {
    // 0.5秒待つ
    sleep(0.5) 
    // 画面表示
    present(HogeViewController, animated: true, completion: nil)
    }
    

コメントを追加するためには 会員登録・ログインが必要です。

太字斜体H3H4リンク画像引用コード番号リストリスト

投稿者プロフィール
新しもの好きエンジニア。