iPhone: скрытие панели вкладок в текущем представлении

Есть ли способ скрыть и показать панель вкладок в текущем представлении, в котором вы находитесь. Так что не с setHidesBottomBarWhenPushing, потому что это работает только с представлением, которое отправляется.

Вы можете сделать это с помощью контроллера навигации

[view.navigationController setNavigationBarHidden:YES animated:YES];

Но, конечно, есть способ сделать это с помощью панели вкладок.


person Burf2000    schedule 25.01.2011    source источник


Ответы (2)


Добавьте этот код в свой метод applicationDidFinishLaunching:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(toggleTabBarHidden)
name:@"toggleTabBarHidden"
object:nil];

Сделайте в своем appDelegate такой метод:

-(void)toggleTabBarHidden{
        for(UIView *view in self.window.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            if(view.hidden){
                view.hidden = NO;
                break;
            }
                view.hidden = YES;
        }
    }
}

Теперь, когда вы хотите показать / скрыть свой UITabBar, просто активируйте уведомление:


[[NSNotificationCenter defaultCenter] postNotificationName:@"toggleTabBarHidden" 
object:nil];

Это будет работать из любого места в вашем приложении.

person Aurum Aquila    schedule 25.01.2011
comment
Отличная идея, однако элемент панели вкладок не поддерживает скрытый внешний вид. - person Burf2000; 25.01.2011
comment
Работал, не анимировал, но я думаю, что это слишком много. Спасибо - person Burf2000; 25.01.2011
comment
Это не слишком много, вы можете сделать это с помощью блоков анимации. Их очень легко реализовать. Я люблю их. Здесь: developer.apple.com/library / ios / # documentation / WindowsViews / Вам просто нужно анимировать свойство alpha с 1,0 до 0,0 примерно за 0,5 секунды. - person Aurum Aquila; 25.01.2011
comment
Вы также можете заставить его соскользнуть с экрана, анимировав исходную точку свойства кадра. Я потратил часов на то, чтобы возиться с анимациями UIView, когда обнаружил их. - person Aurum Aquila; 25.01.2011
comment
Идея @Aurum Aquila Genius ... и если у вас есть розетка, подключенная к контроллеру вкладок, вы можете еще больше упростить ее, заменив цикл for на: tabBarController.tabBar.hidden = YES; - person Warebot; 27.02.2011
comment
@Warebot, у меня это изначально было. Проблема заключалась в том, что он собирался скрыть представление, в котором находился пользователь, и он не хотел использовать tabBar.enabled. - person Aurum Aquila; 28.02.2011

Один из способов сделать это - встроить контроллер панели вкладок в контроллер навигации, а затем, когда вы нажмете на контроллер навигации, контроллер панели вкладок выдвинется, панель вкладок и все остальное.

person BRF    schedule 25.01.2011
comment
Контроллер панели вкладок является корневым контроллером, а затем у него есть дочерние контроллеры навигации. - person Burf2000; 25.01.2011
comment
Вы все еще можете это сделать, но в итоге вы получите сложную иерархию представлений (вам придется вставить NavigationController в свой корень). Если вы посмотрите на приложения Apple в целом, когда они хотят скрыть панель вкладок, они модально представляют вид поверх контроллера панели вкладок. - person BRF; 25.01.2011
comment
Действительно, это интересно знать. Странно, что он не поддерживает скрытое свойство. Мне нужно оживить это - person Burf2000; 25.01.2011