2015-10-19 2 views
1

Окружение:Как я могу удалить TabBar если ввести одну заданную ViewController

Предположим, у меня есть 2 TableViewControllers (все в своих NavigationControllers), которые содержат TypeA & B элементы соответственно.

В любом TableView, если я нажму кнопку «+», он перейдет в элемент Add [?] ItemViewController («?» - это тип элемента: A или B). Обычно, даже если я уже в AddView, я также могу переключиться на другой вид, нажав значок панели вкладок, верно?

SO Как я могу запретить пользователю переключаться, если они уже ввели один AddView?

Используйте код Swift? или просто изменить структуру раскадровки?

Вот структура Main.storyboard:

enter image description here

+1

я добавил ответ, если его полезным, пожалуйста upvote это – Mehul

ответ

3

Мы сделали точно так же в нашем приложении. Чтобы скрыть по умолчанию TabBar, просто переопределить hidesBottomBarWhenPushed метод в контроллере представления родителя (или в каждом контроллере представления в вашем приложении)

#pragma mark - Overriden UIViewController methods 
- (BOOL)hidesBottomBarWhenPushed { 
    return YES; 
} 

enter image description here

другое решение

You также можно скрыть панель вкладок

// pass a param to describe the state change, an animated flag and a completion block matching UIView animations completion 
- (void)setTabBarVisible:(BOOL)visible animated:(BOOL)animated completion:(void (^)(BOOL))completion { 

    // bail if the current state matches the desired state 
    if ([self tabBarIsVisible] == visible) return; 

    // get a frame calculation ready 
    CGRect frame = self.tabBarController.tabBar.frame; 
    CGFloat height = frame.size.height; 
    CGFloat offsetY = (visible)? -height : height; 

    // zero duration means no animation 
    CGFloat duration = (animated)? 0.3 : 0.0; 

    [UIView animateWithDuration:duration animations:^{ 
     self.tabBarController.tabBar.frame = CGRectOffset(frame, 0, offsetY); 
    } completion:completion]; 
} 

// know the current state 
- (BOOL)tabBarIsVisible { 
    return self.tabBarController.tabBar.frame.origin.y < CGRectGetMaxY(self.view.frame); 
} 

// illustration of a call to toggle current state 
- (IBAction)pressedButton:(id)sender { 

    [self setTabBarVisible:![self tabBarIsVisible] animated:YES completion:^(BOOL finished) { 
     NSLog(@"finished"); 
    }]; 
} 

другое решение

Вы можете установить UIViewController.hidesBottomBarWhenPushed вместо:

DetailViewController *detailViewController = [[DetailViewController alloc] init]; 
detailViewController.hidesBottomBarWhenPushed = YES; 
[[self navigationController] pushViewController:detailViewController animated:YES];  
+0

Thx! Это работает хорошо! – Microos

+1

@ Microos, мое удовольствие, мы всегда готовы вам помочь. – Mehul

Смежные вопросы