Iphone:导航后取消隐藏标签栏和导航栏

时间:2010-09-22 08:50:57

标签: iphone cocoa-touch xcode uinavigationcontroller uitabbarcontroller

我有一个UItabbarController,在第一个标签内有一个UINavigationController。在界面构建器中,我将标签栏和导航栏设置为隐藏。

当第一个屏幕加载时(第一个选项卡的Uinaviagtioncontroller中的UIVewcontroller)我设置了一个NStimer 2秒钟。然后导航到第二个视图。现在,当发生这种情况时,我希望导航栏和标签栏出现,并且应该设置动画。

这就是我现在正在做的事情。

第一个UIViewController:

- (void)viewDidLoad {
    [super viewDidLoad];
    splashTime = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector (action) userInfo:nil repeats:NO];
}

-(void)action{
    SecondViewController *m = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    [self.navigationController pushViewController:m animated:YES]; 
}

第二个UIViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        self.hidesBottomBarWhenPushed = NO;
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    }
    return self;
}

但实际上并没有发生任何事情。 Tabbar或NavigationBar都不会出现。

1 个答案:

答案 0 :(得分:1)

尝试将第二视图控制器的代码放在viewWillAppear方法而不是initWithNibName方法中,看看是否有所需的结果:

- (void) viewWillAppear:(BOOL)animated {
  self.hidesBottomBarWhenPushed = NO;
  [self.navigationController setNavigationBarHidden:NO animated:YES];
}

每次视图即将显示时都应该调用它。