古い iOS ハードウェアを使用している人々からの多くの要求に応じて、私は現在、iOS 3 で動作するようにアプリをリファクタリングおよび最適化しています。テストした iPhone 3G ユニット。
グリッチは iOS 4 で修正されたようですが、それ以前に、他の誰かがこのグリッチを抱えていて、(比較的エレガントな) 回避策を見つけていたのではないかと思っていました。
問題は、以下に示すとおりです。メモリ警告が発生し、画面外のすべてのビューが解放されると、タブ バーを含むビュー コントローラーを画面に戻すと、その中にあるはずの UITabBarItems がすべてなくなります。私が見る限り、それらはまったく描かれていません。つまり、タブ バーをタップしても効果がありません。ブレークポイントを設定し、メモリ内の UITabBar とそのアイテムを調べた後、それらはすべてそこに残っています (つまり、解放されていません)。ただし、コントローラーの loadView メソッドで UITabBar が再作成されたときに再描画されていません。
私のアプリは、独自のバージョンの UITabBarController を実装したという点で、公式の Twitter アプリと同様に機能するため、親 UINavigationController との統合を適切に制御できます。ただし、すべての子ビュー コントローラーがそれぞれの UITabBarItems を処理し、クラスの init メソッド内で初期化するように、元の UITabBarController クラスにできるだけ近づけて設定しました。アクセサー メソッドを介して子ビュー コントローラーが TabController オブジェクトに渡されると、tabBarItems がアクセスされ、UITabBar ビューに追加されます。
この動作を以前に見たことがあり、修正方法を知っている人はいますか? これは iOS 4 ですでに動作しているので、非常に簡単な修正があることを願っています。
どうもありがとう!