7

Split View Controller を使用したユニバーサル アプリの状態の復元に奇妙な問題があります。

ストーリーボードとセグエを使用し、すべての関連ビューコントローラーの復元識別子を使用して、非常に標準的な方法で物事を行っているという奇妙なこと。ロジックはストーリーボードにあり、最小限の XCode プロジェクトがこれを示しているため、実際にはコードはありません。

問題は、Split View Controller から提示されるフォーム シートとしてモーダルに表示される設定画面にあります。私のView Controller階層は最終的には正しくなりますが、遷移はあまり意味がありません. 何らかの理由で、状態の復元によってモーダル コントローラーが所定の位置にアニメーション化されます。

アプリが最後に実行されたときのスクリーンショットで画面が開始されるため、設定コントローラーが既に存在するため、アニメーションは視覚的なノイズにすぎません。

インタラクティブに設定に入るときに尊重されるセグエのアニメーションを無効にしようとしましたが、状態の復元が同じことを行うと、アニメーションが表示されます。

これを回避する標準的な方法は何ですか?

4

1 に答える 1

12

電話self.window?.makeKeyAndVisible()をかけることでapplication(_:willFinishLaunchingWithOptions:)問題が解決しました。

ドキュメントの詳細:

重要

アプリがビュー コントローラーを復元するために状態復元機構に依存している場合は、常にこのメソッドからアプリのウィンドウを表示します。application:didFinishLaunchingWithOptions:アプリのメソッドでウィンドウを表示しないでください 。ウィンドウのmakeKeyAndVisibleメソッドを呼び出しても、ウィンドウがすぐに表示されるわけではありません。UIKit は、アプリの application:didFinishLaunchingWithOptions:メソッドが終了するまで待ってから、ウィンドウを画面に表示します。

于 2017-04-17T09:23:59.590 に答える