iOS 5 UINavigationBar удаление подпредставлений (подпредставление изображения) удаляет панель навигации - PullRequest
9 голосов
/ 13 октября 2011

В моем приложении, которое отлично работает на iOS 4, навигационная панель исчезла при запуске iOS 5. Вот что я выяснил, вызвало проблему: я удалял подпредставления в методе RootViewController viewWillAppear:

for(UIView* view in self.navigationController.navigationBar.subviews)
    {
        if ([view isKindOfClass:[UILabel class]]) 
        {
            [view removeFromSuperview];
        }
        if([view isKindOfClass:[UIImageView class]])
        {
            [view removeFromSuperview];
        }
    }

Я делал это, потому что контроллер второго вида, который я нажимаю на контроллере навигации, добавляет изображение и метку на панель навигации, которую я должен удалить, когда вид отключен. В iOS 5 приведенный выше код удаляет навигационную панель. Как исправить это или правильный способ сделать это для поддержки iOS4 и iOS 5?

Ответы [ 2 ]

6 голосов
/ 14 октября 2011

setTag для этих изображений и uilabel, затем удаление его из кода выше сделали свое дело.

for(UIView* view in self.navigationController.navigationBar.subviews)
{
   if(view.tag == 9 || view.tag == 99)
   {
      [view removeFromSuperview];
   }
}
0 голосов
/ 14 октября 2011

Вы можете сделать ваши добавленные представления подклассами их соответствующих классов UIKit и проверить эти специфические подклассы. На самом деле, чтобы иметь самый понятный и читаемый код, вы должны создать подкласс навигационного контроллера и панели навигации, чтобы можно было нарисовать собственное изображение и метку, чтобы можно было просто установить фоновое изображение и метку переднего плана равными нулю. Это займет немного времени, но конечный результат будет гораздо более продолжительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...