2013-10-15 40 views
2

如何才能让导航栏仅在第一个视图中隐藏,我有一些代码会让我这样做,但如果我转到第二个视图然后回到我的第一个我可以看到导航栏向上滑动,有什么办法可以使它不这样做。这里是我的代码。如何在第一个视图上隐藏导航栏

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:(BOOL)animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewWillDisappear:animated]; 
} 

回答

2

在第一种观点

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

在第二视图

-(void)viewDidLoad:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
} 
+0

感谢好工作 – Jacobanks

-1

做这样的事情:

@interface MyViewController : UIViewController 

@property (nonatomic) BOOL shouldHideNavBar; 

@end 


@implementation MyViewController 

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

@end 

第一次运行,虽然,对于shouldHideNavBar的默认值是NO。在viewWillAppear第一次被调用之后,它被设置为YES。所以,下次viewWillAppear被调用时,您的导航栏将被隐藏。

1

你可以只有一个实例变量,并跟踪它是否是第一次出现视图,即。 BOOL isFirstTime请务必将其设置为YESviewDidLoad并在viewDidAppear传递给setNavigationBarHidden:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    isFirstTime = YES; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:(BOOL)animated]; 
    [self.navigationController setNavigationBarHidden:isFirstTime animated:animated]; 
    [super viewWillAppear:animated]; 
    isFirstTime = NO; 
}