hidesBottomBarWhenPressed, но когда выскочил - PullRequest
3 голосов
/ 06 апреля 2011

У меня проблема с чем-то, что кажется очень простым. Мое приложение имеет иерархию представления, состоящую из UITabBarController, содержащего UINavigationControllers. Когда я иду от корня до второго уровня Я установил для hidesBottomBarWhenPressed значение true, чтобы панель вкладок была скрыта

На моем первомLevelController:

[secondLevelController setHidesBottomBarWhenPushed:YES];

[self.navigationController pushViewController:secondLevelController animated:YES];

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

[self setHidesBottomBarWhenPushed:NO];

[thirdLevelController setHidesBottomBarWhenPushed:NO];

[self.navigationController pushViewController:thirdLevelController animated:YES];

(я знаю, мне тоже не понравился [self setHidesBottomBarWhenPushed:NO], но иначе это не сработало ...)

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

Любая помощь приветствуется

Ответы [ 5 ]

12 голосов
/ 19 июля 2011

Это то, что у меня работает.

[self setHidesBottomBarWhenPushed:NO];
[thirdLevelController setHidesBottomBarWhenPushed:NO];
[self.navigationController pushViewController:thirdLevelController animated:YES];
[self setHidesBottomBarWhenPushed:YES];

Третий уровень Controller показывает панель вкладок, а secondLevelController не показывает панель вкладок, когда вы открываете третий элемент уровня.

5 голосов
/ 17 апреля 2015

На вашем втором контроллере ViewView выполните:

- (BOOL) hidesBottomBarWhenPushed {
    return ([self.navigationController.viewControllers lastObject] == self);
}

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

0 голосов
/ 20 мая 2013

Я был на самом деле с той же проблемой.Я всегда пытался скрыть панель вкладок при выборе строки и отключить скрытие после возврата в список (представление таблицы внутри контроллера навигации), чтобы пользователь мог снова выбрать меню.Я установил tabbarcontroller скрытым внутри метода

-(void)tableView:(UITableView *)tableView 
           didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

, но когда я скрыл его внутри этого метода, Tabbar все еще скрывался при возвращении в мой список снова.Теперь я скрываю Tabbarcontroller внутри метода init определенного viewcontroller, возможно, это работает и для кого-то еще:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        // Custom initialization
    }

    [self setHidesBottomBarWhenPushed:YES];

    return self;
}

теперь, когда я выбираю элемент списка и этот viewcontroller будет представлен, панель вкладок будет скрытавозвращаясь к списку, он появляется снова.

0 голосов
/ 22 августа 2011

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

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    if(backFromThirdView)
     [self setHidesBottomBarWhenPushed:YES];
    else
         [self setHidesBottomBarWhenPushed:YES];

}

0 голосов
/ 30 апреля 2011

Вы можете попробовать это

Вы объявляете во второмLevelController

static BOOL bottomBarShouldHide = YES;

В viewDidLoad,

if (bottomBarShouldHide) {
    [secondLevelController setHidesBottomBarWhenPushed:YES];
    bottomBarShouldHide = NO;
}
else {
     [secondLevelController setHidesBottomBarWhenPushed:NO];
     bottomBarShouldHide = YES;
}

Я надеюсь, что это может помочь вам.

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