私のアプリには、私たちのAPIから新しいデータを取得する更新画面が含まれています。これは現在、メニューのスライドから手動で呼び出されます。ルートビューのAppDelegateコールバックがロードされました
アプリの読み込み時に「更新が検出されました」という機能を追加します。アプリが読み込まれると新しいデータがチェックされ、新しいデータがある場合は更新画面がpopover
として表示されます。私はまた、最初のアプリケーションの負荷時に更新画面を表示したい(データを持たないアプリケーションを出荷するため、少なくとも1つは更新を実行する必要がある)。
アプリは非常に簡単でroot view controller
は現在のところ、navcontroller
は、3つまたは4つのVCをシリーズに持っています(サイドページから2つの情報ページとアップデート画面を開くアプリとはかなり違います)。
私は、AppDelegate
の "update check"を実行し、trueを返す場合は、popoverを提示する必要があると判断します。しかし、私はこのエラーを取得する:
2016-11-01 13:02:28.507 XXX[38895:1026306] Warning: Attempt to present on whose view is not in the window hierarchy!
どのroot controller
がまだロードされ、提示されていないので、私は推測しています。
この問題を解決するにはどうすればよいでしょうか。私はいくつかのアイデアを持っていますが、いずれかが良いかどうか、またはそれらがうまくいくかどうかは分かりません!
は私の最初のビューコントローラに更新チェックを入れて(それが属するところこれがないアプリデリゲートに
を使用するコールバック を「ルートビューコントローラがロードされている」のいくつかの並べ替えを探してみてください
私の最初のビューコントローラとしてのある種の「ルータービュー」は、チェックのロジックを置くことができます。 。しかし、私はこの画面がアプリを保持することを望んでいません(つまり、ユーザーが更新チェックを待つようにスピナーが必要ない - 私は彼らがアプリを使用して直進し、必要に応じて更新ポップオーバーショーを行いたい)
これに関するアドバイスはありますか?
私はこれを考慮したいと思っていましたが、それがチェックされるまで、アプリに。更新チェックは、バックグラウンドで非同期に実行され、必要に応じて表示されます。私はあなたのアプローチはこれを許可するとは思わないが、返信のためにお越しください – TRG
私は現在チェックを行っていないということを忘れていました(デベロッパー向けにハードコードされています)。私がNSTimerで現在のアクションを0.1秒遅らせれば、それは動作します。 – TRG
AppDelegateでルートビューを設定した場合は、ルートビューコントローラ内の更新のチェックを追加する必要があります。したがって、あなたの場合、あなたはルートビューとしてnavigationControllerを持ち、そのナビゲーションコントローラのviewDidLoad()内には、更新があるかどうかをチェックし、その情報に基づいてポップオーバーを表示するかどうかをチェックできます。 – subasa