При большом количестве запросов от людей, использующих устаревшее аппаратное обеспечение iOS, в настоящее время я выполняю рефакторинг и оптимизирую свое приложение, чтобы оно работало на iOS 3. При этом у меня возникли проблемы с моим UITabBar, на который я могу реплицировать все устройства iPhone 3G, на которых я тестировал.
Похоже, что глюк был исправлен в iOS 4, но мне было интересно, если до этого времени кто-нибудь еще имел этот глюк и нашел (относительно элегантный) обходной путь для него.
Проблема в том, что вы видите ниже; когда появляется предупреждение о памяти и все представления за пределами экрана освобождаются, когда я возвращаю контроллер представления с панелью вкладок обратно на экран, все UITabBarItems, которые должны быть в нем, исчезают. Насколько я вижу, они вообще не нарисованы; то есть нажатие на панель вкладок не имеет никакого эффекта. После установки точек останова и изучения UITabBar и его элементов в памяти они все еще там (т.е. не освобождаются), просто они не перерисовываются, когда UITabBar заново создается в методе loadView контроллера.
Мое приложение работает аналогично официальному приложению Twitter, в котором я реализовал свою собственную версию UITabBarController, чтобы я мог правильно контролировать интеграцию его с родительским UINavigationController. Я установил его как можно ближе к исходному классу UITabBarController, хотя все дочерние контроллеры представления обрабатывают свои собственные соответствующие UITabBarItems и инициализируют их внутри методов init класса. Как только дочерние контроллеры представления передаются моему объекту TabController через метод доступа, к tabBarItems осуществляется доступ и добавление в представление UITabBar.
Кто-нибудь видел такое поведение раньше и знает, как я могу это исправить? Я надеюсь, что есть действительно простое исправление для этого, так как оно уже работает в iOS 4, так что я не хочу, чтобы его взломали слишком сильно.
Большое спасибо!