1

私の iOS アプリは UITabBarController ベースのアプリケーションです。別のモーダル ビュー コントローラー内にモーダル ビュー コントローラーを表示する必要がある状況がいくつかあります。

すべてが正常に機能しています。メモリの警告が表示されることを期待してください。タブ バー コントローラーを残した場所に戻るために 2 つのモーダル ビュー コントローラーを閉じようとすると、次のように表示されます。 ここに画像の説明を入力

選択したタブ バー コントローラー ビューが画面に表示されません。

この問題を引き起こす完全な手順は次のとおりです。

  • ユーザーは、現在選択されているタブ バー コントローラーからモーダルに表示される最初のビュー コントローラー (A) を開きます。
  • ユーザーは、View Controller A からモーダルに表示される別の View Controller (B) を開きます。
  • メモリ警告が到着し、非表示のビューが破棄されます。
  • ユーザーは、モーダルに閉じられた B を閉じます (アニメーション)。
  • ユーザーが A を閉じると、モーダルに閉じられます (アニメーション化されます)。
  • 選択したコントローラーのビューは表示されません。

B が表示されず、A からメモリ警告が届いても問題ありません。

また、選択したビュー コントローラーからではなく、タブ バー コントローラーから A を表示しようとしましたが、何も変更されていません。

タブバーとフィード コントローラー (現在選択されているコントローラー) のメイン ビュー イベント エントリ ポイントをログに記録しました。結果は驚くべきものです。

// B is visible on the screen
2012-05-08 15:30:00.563 - Received memory warning.
2012-05-08 15:30:00.563 - viewDidUnload called on tab-bar controller
2012-05-08 15:30:00.564 - viewDidUnload called on feed controller

// user dismisses B controller and A is displayed
2012-05-08 15:30:30.267 - loadView called on feed controller
2012-05-08 15:30:30.268 - viewDidLoad called on feed controller
2012-05-08 15:30:30.274 - loadView called on tab-bar controller
2012-05-08 15:30:30.274 - viewDidLoad called on tab-bar controller

// user dimisses A controller and tab-bar is displayed
2012-05-08 15:30:40.273 - viewWillAppear: called on tab-bar controller

ご覧のとおり、B を閉じると、タブ バー ビュー (およびフィードも) が復元されます。これは私が期待していたものではありません。実際、A を閉じると、タブ バー ビューが復元されるはずです。

何か案は?ありがとう

4

0 に答える 0