Настройка hidesBottomBarWhenPushed оставляет нижнюю панель, отсутствующую после появления контроллера View
У меня есть следующая настройка:
Окно панели вкладок.
На одной вкладке есть навигационный контроллер.
Мой рабочий процесс:
Когда я нажимаю новый viewController на стек навигационного контроллера, я устанавливаю свойство hidesBottomBarWhenPushed.
Это отлично работает, панель вкладок "толкается", когда новый контроллер просмотра скользит на месте.
Проблема:
Когда я выхожу из этого контроллера вида, и контроллер корневого представления снова отображается, однако панель вкладок отсутствует.
Контроллер навигации вырос, чтобы заполнить пробел, оставленный вкладкой.
Есть ли свойство, которое мне нужно настроить, чтобы снова отобразить панель вкладок?
Что я пробовал:
появится в корневом представлении вручную
настройка (сброс) hidesBottomBarWhenPushed для корневого представления
изменение размера корневого представления
изменение размера свойства представления навигационного контроллера (просто оставляет "пустое место", где должна быть таблетка)
Что "sorta" работал:
Если я установил выбранный индекс контроллера панели вкладок в любой другой индекс, появится панель вкладок. Поэтому я знаю, что это все еще "вокруг", но это мало помогает мне.
Ответы
Ответ 1
У меня тоже была эта проблема. Я устанавливал -hidesBottomBarWhenPushed на неправильном контроллере представления.
Неверно (но, похоже, работает до тех пор, пока вы не попнете):
self.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];
Справа:
self.anotherViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];
Ответ 2
это та же проблема, что и у меня, но у меня есть решение, попробуйте это
Я обнаружил, что скрытие, а затем отображение табло сразу после нажатия, решает нашу проблему
- (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];
}
Ответ 3
Если вы используете UINavigationController
и ищете способ скрыть TabBar (BottomBar) в одном контроллере представления, поместите этот код в контроллер вида, который вы хотите скрыть TabBar для:
- (BOOL)hidesBottomBarWhenPushed {
return [self.navigationController.visibleViewController isEqual:self];
}
Другие подходы, которые я пробовал при настройке свойства, заставили TabBar спрятаться после нажатия нового контроллера вида с контроллера View со скрытым TabBar (даже после установки свойства NO).
Ответ 4
Я делаю что-то подобное в своем приложении - просто вызываю:
[self.navigationController popToRootViewControllerAnimated:YES];
похоже, делает трюк, а панель вкладок возвращается - по общему признанию, это ответ на нажатие кнопки, а не на поп-кнопку навигационной панели. Кажется, я помню, что он отлично работал при использовании кнопки обратной панели навигации.
Возможно, проверьте, что вы устанавливаете только один контроллер представления, чтобы для свойства hidesBottomBarWhenPushed установлено значение YES.
Ответ 5
В дополнение к этому:
[self.navigationController popToRootViewControllerAnimated:YES];
Изначально, когда вы делаете self.hidesBottomBarWhenPushed = YES;
Вы должны изменить для viewControllerToBePushed.hidesBottomBarWhenPushed = YES;
Это должно сделать работу!
Ответ 6
скор
self.hidesBottomBarWhenPushed = true
self.performSegueWithIdentifier("viewcontroller_details", sender: nil)
self.hidesBottomBarWhenPushed = false
Ответ 7
В диспетчере представлений, который появляется после того, как отображается панель инструментов, попробуйте эту магию:
- (void)viewWillAppear:(BOOL)animated {
[self.navigationController setToolbarHidden:YES animated:YES];
}
Ответ 8
Любопытно, я никогда не устанавливал это значение, но переопределял его на ViewController, который я хочу:
- (BOOL) hidesBottomBarWhenPushed
{
return YES;
}
Ответ 9
Swift 3: Из кода вы должны установить pushedController.hidesBottomBarWhenPushed для true.
Раскадровка:
Выберите толкаемый контроллер, перейдите к Attribute Inspector, выберите опцию "Скрыть нижнюю панель при нажатии" в разделе "Контроллер просмотра".