Ответ 1
После траты часов и размещения вопроса здесь я обнаружил, что решение этой проблемы заключается в добавлении следующей строки после создания экземпляра ArticleController.
articleController.hidesBottomBarWhenPushed = YES;
У меня есть приложение с контроллером панели вкладок, и каждый вид содержит контроллер навигации. Мое главное окно выглядит следующим образом: Изображение здесь http://www.freeimagehosting.net/image.php?7bc867a594.png
Все работает нормально, как есть, но я заметил проблему при передаче подробного представления в контроллер навигации. В didSelectRowAtIndexPath для tableviewcontroller, который принадлежит контроллеру панели вкладок (тот, который называется Last в изображении), я делаю это:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ArticleViewController *articleController = [[ArticleViewController alloc] initWithNibName:@"ArticleView" bundle:nil];
[self.navigationController pushViewController:articleController animated:YES];
[articleController release];
articleController = nil;
}
ArticleViewController имеет собственную панель вкладок, потому что он должен отображать разные вещи. Проблема в том, что когда я помещаю ArticleViewController в navigationController, я вижу обе вкладки в нижней части представления. Можно ли как-нибудь решить эту проблему?
заранее спасибо
После траты часов и размещения вопроса здесь я обнаружил, что решение этой проблемы заключается в добавлении следующей строки после создания экземпляра ArticleController.
articleController.hidesBottomBarWhenPushed = YES;
Если вы предпочитаете настройку раскадровки по кодированию, для этого есть переключатель. Просто зайдите destinationViewController > Attribute Inspector:
Очень простое решение:
destinationViewController.hidesBottomBarWhenPushed = YES;
В вашем случае:
articleController.hidesBottomBarWhenPushed = YES;
Надеюсь, это поможет!
Вы можете просто скрыть родительскую вкладку через раскадровку.
Выберите viewcontroller > Инспектор атрибутов > проверьте Скрыть нижнюю панель в Push
Вы можете добавить приведенный ниже код в контроллер представления, который вы нажимаете.
-(BOOL)hidesBottomBarWhenPushed
{
return YES;
}
Это позволит скрыть панель вкладок только в контроллере push-представления, и когда вы откроете панель вкладок контроллера представления, она не будет отображаться в остальных остальных контроллерах представления.
Swift версия (3.x и выше)
override var hidesBottomBarWhenPushed: Bool {
get {
return navigationController?.topViewController == self
}
set {
super.hidesBottomBarWhenPushed = newValue
}
}
Спасибо
для быстрого 3, напишите тот же код, который вы показываете на вкладке, перед кодом pushviewController, как показано ниже
var frame = self.tabBarController?.tabBar.frame
frame?.origin.y = self.view.frame.size.height - (frame?.size.height)!+112
UIView.animate(withDuration: 0.2, animations: {
self.tabBarController?.tabBar.frame = frame!
})
self.navigationController?.pushViewController(viewController, animated: true)
или просто использовать для отображения панели вкладок, вы можете использовать
viewController.hidesBottomBarWhenPushed = false
введите здесь описание изображения
Перейдите к построителю интерфейса в Xcode → открыть инспектор атрибутов и проверьте элемент "Скрыть нижнюю панель на Push" для контроллера просмотра, который вы не хотите показывать панель вкладок. Он будет работать!
Используйте свойство hidesBottomBarWhenPushed
в контроллере, который вы хотите скрыть.
Для скрытия все контроллеры помещены в prepare for segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
segue.destination.hidesBottomBarWhenPushed = true
}