Как я могу показать панель вкладок при вставке UIViewController в стек навигации - PullRequest
7 голосов
/ 27 августа 2009

Так что очень легко скрыть панель вкладок, когда вы помещаете контроллер представления в стек контроллера навигации:

uiViewController.hidesBottomBarWhenPushed = YES;

работает просто персик.

Поместите, скажем, я хочу глубже в стек и показать это снова?

Настройка

 laterUIViewController.hidesBottomBarWhenPushed = NO; 

на некоторых более поздних контроллерах представления не заставляет это появляться снова. Это все еще скрыто.

Ответы [ 4 ]

3 голосов
/ 27 августа 2009

Вы можете попробовать создать подкласс UIViewController и переопределить

- (void)viewWillAppear:(BOOL)animated { self.hidesBottomBarWhenPushed = YES; }
- (void)viewWillDisappear:(BOOL)animated { self.hidesBottomBarWhenPushed = NO; }

И затем использование этого подкласса в качестве суперкласса контроллера представления, для которого вы хотите показать нижнюю панель.

2 голосов
/ 10 ноября 2009

Это сработало для меня:

- (void)viewWillAppear:(BOOL)animated { self.tabBarController.tabBar.hidden = YES; }
- (void)viewWillDisappear:(BOOL)animated { self.tabBarController.tabBar.hidden = NO; }
1 голос
/ 07 апреля 2011

Попробуйте этот обходной путь: если вы не анимируете переключение между контроллерами представления, оно должно работать нормально.

Идея состоит в том, чтобы увеличить размер представления контроллера панели вкладок, чтобы панель вкладок (которая находится в нижней части представления) выходила за пределы экрана и восстанавливала размер представления при скрытии вида.

В вашем контроллере представления, который должен скрывать панель вкладок, определите следующие методы:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    CGRect r = self.tabBarController.view.frame;
    r.size.height +=self.tabBarController.tabbar.frame.size.height;
    self.tabBarController.view.frame = r;
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.tabBarController.view.frame = CGRectMake(0, 0, 320, 480); //for iPhone portrait
}

Вы должны убедиться, что в вашем приложении контроллер панели вкладок делегата и оконные выходы определены и правильно связаны с XIB

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
0 голосов
/ 27 августа 2009

Попробуйте отменить скрытие, так что вы говорите, чтобы оно скрывалось, оно скрывалось, но затем вы говорите, чтобы оно не скрывало его (я не знаю, показывает ли оно это снова, если вы установили значение no), но похоже, что нет либо это, либо вы говорите ему не скрывать, когда контроллер представления, в котором вы хотите панель, уже нажата, и она не скрывает панель до тех пор, пока не будет нажат следующий контроллер представления, поэтому вы должны попытаться установить ее как скрытую. .

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