Просмотр размеров с настройкой навигационной панели скрытой с помощью push / pop - PullRequest
4 голосов
/ 05 ноября 2011

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

Итак, вопрос № 1: есть ли способ нажать новый контроллер представления и установить панель навигации в скрытое, и не получать анимацию скрытия до тех пор, пока новый контроллер представления не появится на экране.выглядит смешно, что панель навигации скрывается, а затем выдвигает новый контроллер представления.

Когда новый контроллер представления присутствует, когда я его вынимаю, я устанавливаю панель навигации обратно

[self.navigationController.navigationBar  setHidden:NO];

Но когда он выскочил, панель навигации больше не возвращается.Это потому, что этот навигационный бар предназначен для текущего контроллера навигации, а не для нового, представляемого после всплывающего окна?(вопрос № 2)

Вопрос 3: Понимая, что не отображается моя панель навигации, в viewController, который представлен после всплывающего окна, в его viewDidAppear я добавил

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationController.navigationBar setHidden:NO];
}

, который показываетпанель навигации, но размер представления неправильный, так как кажется, что после того, как панель навигации была скрыта, остальная часть представления заняла пустое пространство, а затем панель навигации оказалась поверх содержимого.Что я могу с этим поделать?Или я неправильно подхожу к ней с помощью push и pop? (Вопрос № 3).

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Я столкнулся с той же самой проблемой (только в обратном порядке: я начинал с скрытой панели навигации и выдвигал вид, где я хотел видеть панель навигации), и на самом деле это очень легко исправить.

Просто замените ваши звонки:

[self.navigationController.navigationBar setHidden:NO];

на

[[self navigationController] setNavigationBarHidden:NO animated:YES];            

В моем коде я вызываю эти операторы в методах - (void)viewWillAppear:(BOOL)animated каждого соответствующего View Controller.

Я только что попробовал это решение в том порядке, в котором вы используете (видимый, затем скрытый), и, похоже, оно работает так же хорошо.

0 голосов
/ 05 ноября 2011

Интересный вопрос.Вы можете попробовать изменить свойство hidden в viewWillAppear и viewWillDisappear, но, похоже, это также может не дать желаемых результатов.

Можете ли вы представить контроллер вида модально вместо создания панели навигацииисчезают?Если бы это был последний контроллер представления в стеке, это было бы возможно.Для пользователя также может иметь смысл видеть контроллер представления, представленный по-другому.Это может указывать пользователю на то, что переход от этого контроллера больше не выполняется с помощью кнопки «Назад».Это может быть более разумно, чем просто исчезнуть навигационная панель.

Если вы все еще хотите, чтобы контроллер вида скользил справа, я не думаю, что это можно сделать с помощью контроллера модального представления.Но вы можете сделать это, анимировав вид, который заполняет экран.(Вы просто добавляете представление с рамкой, у которой origin.x равен ширине экрана. Затем в анимации вы меняете origin.x на 0.0. Дайте мне знать, если вам нужно больше подробностей об этом.)

Тем не менее, я бы порекомендовал представлять контроллер представления иначе, чем представление, обычно представляемое навигационным контроллером.Потому что, по сути, вы больше не позволяете пользователю перемещаться от этого представления, как он обычно делает из контроллера навигации.(Итак, мой ответ на вопрос № 3 будет «да».)

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