次の機能を備えたiPadSplitViewControllerアプリケーションがあります。
- マスター(左側)のビューコントローラーは、shouldHideViewControllerデリゲートメソッドでYESを返すことにより、縦向きと横向きの両方で非表示になります
- マスタービューコントローラーにはタブバーコントローラーが含まれています
- 複数のマスター詳細マネージャーを使用して、マスタータブバーでのユーザーの選択に基づいて詳細ビューコントローラーの交換を管理します
アプリケーションがメモリ警告を受信した後にのみ発生する問題があります。マスタービューがスライドインすると(スワイプまたは左バーボタンをタップして)、ビューは事実上空になります。つまり、テーブルビューは含まれず、テーブルビューがあるべき半透明の背景だけが含まれます。タブバーで他のビューをタップすると、マスタービューが正しく読み込まれます。次にタップして問題ビューに戻ると、正しく表示されるようになりました。
もともと私は、ビューが空であるだけでなく、フルスクリーン用のサイズになっているという別の問題を抱えていました。私はこのSOの質問で提案された解決策を介してサイズの問題を修正することができました-解決策では、「メモリ警告を受信すると、View Controllerが解放されるため、再び表示されると、サイズが取得されるようです。フルスクリーンの親ビューからです。したがって、フレームが読み込まれるたびにフレームをリセットする必要があります。」
コードにブレークポイントを設定することで、メモリ警告の後にマスタービューに最初にアクセスしようとしたときに、ViewDidLoadイベントが呼び出された(メモリ警告がなかった場合は発生しません)が、ViewDidAppearイベントとViewWillAppearイベントが発生したことを確認できます。呼び出されません。そのため、アプリはメモリ警告の後にマスタービューをリロードする必要があることを認識していますが、何らかの理由でマスタービューが表示されていないようです。
メモリ警告の後にビューを正しく表示する方法を見つけるのに苦労しています。または、メモリ警告を受信したときにマスタービューがアンロードされないようにするためにすべきことはありますか?
更新:メモリ警告時にマスタービューが表示されている場合、この問題は発生しないことも確認しました。