Настройка 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, выберите опцию "Скрыть нижнюю панель при нажатии" в разделе "Контроллер просмотра".