Установка hidesBottomBarWhenPressed оставляет нижнюю панель отсутствующей после появления View Controller - PullRequest
18 голосов
/ 24 июня 2009

У меня есть следующие настройки:

Приложение панели вкладок. На одной вкладке находится навигационный контроллер.

Мой рабочий процесс:

Когда я помещаю новый viewController в стек контроллера навигации, я устанавливаю свойство hidesBottomBarWhenPhed.

Это прекрасно работает, панель вкладок "толкается", когда новый контроллер представления скользит на месте.

Проблема:

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

Контроллер навигации вырос, чтобы заполнить пространство, оставленное панелью вкладок.

Нужно ли установить свойство, чтобы панель вкладок снова была видна?


Что я пробовал:

выскакивает в корень вручную

установка (сброс) hidesBottomBar, когда нажата для корневого представления

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

изменение размера свойства view контроллера навигации (просто оставляет "белое пространство" там, где должна быть вкладка)

Какое "сорта" сработало:

Если я установлю выбранный индекс контроллера панели вкладок на любой другой индекс, появится панель вкладок. Так что я знаю, что это все еще «вокруг», но это мало чем помогает.

Ответы [ 9 ]

107 голосов
/ 08 октября 2010

У меня тоже была эта проблема. Я устанавливал -hidesBottomBarWhenPressed на неверный контроллер вида.

Неправильно (но, кажется, работает, пока вы не поп):

self.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];

Справа:

self.anotherViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];
9 голосов
/ 09 сентября 2010

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 NSDictionary *theItem = [items objectAtIndex:indexPath.row];
 DetailController *nextController = [[DetailController alloc] initWithItem:theItem];
 self.hidesBottomBarWhenPushed = YES;
 [self.navigationController pushViewController:nextController animated:YES];
 //
 //[nextController setHidesBottomBarWhenPushed:YES];
 self.hidesBottomBarWhenPushed=NO;

 [nextController release];

}

6 голосов
/ 22 апреля 2014

Если вы используете UINavigationController и ищете способ просто скрыть TabBar (BottomBar) в одном контроллере представления, поместите этот код в контроллер представления, для которого вы хотите скрыть TabBar:

- (BOOL)hidesBottomBarWhenPushed {

    return [self.navigationController.visibleViewController isEqual:self]; 
}

Другие подходы, которые я пробовал, просто устанавливая свойство, вызывали скрытие TabBar после нажатия нового контроллера представления из контроллера представления со скрытой TabBar (даже после установки свойства в NO).

1 голос
/ 10 мая 2016

быстрое

self.hidesBottomBarWhenPushed = true
self.performSegueWithIdentifier("viewcontroller_details", sender: nil)
self.hidesBottomBarWhenPushed = false
1 голос
/ 07 апреля 2014

Любопытно, я никогда не устанавливал это значение, но переопределил его на ViewController, который я хочу:

- (BOOL) hidesBottomBarWhenPushed
{
    return YES;
}
1 голос
/ 18 марта 2012

В дополнение к этому:

[self.navigationController popToRootViewControllerAnimated:YES];

Первоначально, когда вы делаете self.hidesBottomBarWhenPushed = YES;

Вы должны измениться на viewControllerToBePushed.hidesBottomBarWhenPushed = YES;

Это должно сделать работу!

1 голос
/ 25 июня 2009

Я делаю нечто подобное в своем приложении - просто звоню:

[self.navigationController popToRootViewControllerAnimated:YES];

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

Возможно, проверьте, что вы устанавливаете только один контроллер представления, для которого для свойства hidesBottomBarWhenPressed установлено значение YES.

0 голосов
/ 22 ноября 2017

Swift 3: Из кода вы должны установить для pressedController.hidesBottomBarWhenPressed значение true.

Раскадровка: Выберите толкаемый контроллер, перейдите в инспектор атрибутов, выберите опцию «Скрыть нижнюю панель при нажатии» под View Controller.

0 голосов
/ 16 марта 2013

В контроллере вида, который появляется после того, как тот, у которого есть панель инструментов, попробуйте это волшебство:

- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setToolbarHidden:YES animated:YES];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...