Установить панель навигации скрытой, в зависимости от того, как появился контроллер вида - PullRequest
8 голосов
/ 18 августа 2011

У меня есть панель вкладок с контроллером навигации в одной из вкладок. В настоящее время в корневом представлении контроллера навигации нет навигационной панели, которая отображает анимацию в подпредставлениях

.
- (void)viewDidLoad {
   ...
   [self.navigationController setNavigationBarHidden:YES animated:NO];
   ...
}

и

- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

Но, конечно, изменение вкладок запускает функцию viewWillAppear, и поэтому, когда я возвращаюсь к корневому представлению, панель навигации скользит, а не просто исчезает.

Есть ли способ, которым я могу скрыть панель навигации в корневом представлении, не анимируя ее, за исключением случаев, когда она появляется из подпредставления в стеке навигации?

Ответы [ 3 ]

14 голосов
/ 25 августа 2011

Параметр (BOOL)animated в viewWillAppear:animated. При смене вкладок он будет отображаться как NO, поскольку анимация немедленная. С другой стороны, если он вытолкнул или вытолкнул из стека навигации с помощью animated:YES, то он будет иметь вид YES.

Хотя это выглядит как взлом, но это правильный путь: вам не нужно выяснять, кто был вызывающим абонентом, вместо этого сосредоточьте внимание на том факте, что , если ваш контроллер представления будет выглядеть анимированным, у вас есть время сделайте свою собственную анимацию , если нет, прикрутите ее, немедленно покажите (или, в этом случае, скройте) все.

3 голосов
/ 20 августа 2011

Попробуйте показать / скрыть панель в методе navigationController: willShowViewController: animated: делегата UINavigationController, в зависимости от того, является ли отображаемый контроллер представления вашим корневым контроллером представления.

0 голосов
/ 24 августа 2011

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

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