NavigationController толкает View вниз при возврате

Я использую контроллер навигации, имеющий 3 представления. В первом представлении строка заголовка скрыта, а в остальных представлениях она отображается. Поэтому я прячу его в первом представлении в viewWillAppear() как

self.navigationController.navigationBar.hidden = YES;

и во втором представлении я показываю это

self.navigationController.navigationBar.hidden = NO;

При этом строка заголовка скрыта в первом представлении и отображается и отлично работает во втором и третьем представлениях.

Когда я перехожу от первого ко второму виду и к третьему, все работает нормально. Но когда я перехожу от третьего вида обратно ко второму, изображения сжимаются примерно на высоту строки заголовка. И снова отлично работает, когда я перехожу с первого вида на второй.


person pat    schedule 15.11.2011    source источник
comment
Опубликуйте весь код, связанный с navigationBar, который у вас есть в -viewWillAppear методах ваших viewControllers, пожалуйста. похоже, вы установили свойство tintColor nil или используете разные стили navigationBar.   -  person Roman Temchenko    schedule 16.11.2011
comment
Весь мой код находится в методе -viewWillAppear. Что такое tintColor? Не имею представления? Кроме того, я оставлял место вверху для строки заголовка, оказывается, мне не нужно этого делать. Моя вина. Но мои изображения все еще сжимаются на 44 пикселя. Например, высота моего изображения установлена ​​​​на 58 пикселей, и оно отображается только как 15 пикселей. Есть идеи? Большое спасибо, ценю это!   -  person pat    schedule 16.11.2011
comment
Что значит сжато? Если панель навигации обрезает ваши UIImageViews, значит, вы неправильно настроили панель навигации. TintColor — это свойство навигационной панели, оно не должно быть равно нулю, если ваша навигационная панель не должна быть над видом.   -  person Roman Temchenko    schedule 16.11.2011
comment
У меня высота изображения установлена ​​​​на 58 пикселей, и она отображается только как 15 пикселей. Я использовал свойство tintColor как self.navigationController.navigationBar.tintColor = [UIColor blackColor]; Можете ли вы уточнить, что я сделал неправильно и что мне нужно настроить в панели навигации? Кроме того, я не понял вашего последнего предложения, если ваша панель навигации не должна быть над видом.   -  person pat    schedule 16.11.2011
comment
Попробуйте установить на первом viewControllerw в viewWillAppear tintColor=nil и navigationbarStyle BlackTranscluent, а на других viewControllers tintColor Black и navigationBarStyle Black.   -  person Roman Temchenko    schedule 16.11.2011


Ответы (1)


Свойство navigationbar.hidden не следует задавать напрямую. Вы должны использовать:

if(self.navigationController.isNavigationBarHidden == NO)
  self.navigationController.navigationBarHidden=YES;
person railwayparade    schedule 15.11.2011
comment
Что я делал, так это оставлял место вверху для строки заголовка, оказывается, мне не нужно этого делать. Моя вина. Но мои изображения все еще сжимаются на 44 пикселя. Например, высота моего изображения установлена ​​​​на 58 пикселей, и оно отображается только как 15 пикселей. Есть идеи? Большое спасибо, ценю это! - person pat; 16.11.2011