如何仅在第一个视图上隐藏导航栏

时间:2013-10-15 23:58:26

标签: ios uinavigationbar

我怎么能这样做导航栏只隐藏在第一个视图上,我有一些代码可以让我这样做但是如果我去我的第二个视图然后回到我的第一个我可以看到导航栏幻灯片有什么方法可以做到这一点,所以它不会这样做。这是我的代码。

- (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];
}

3 个答案:

答案 0 :(得分:2)

在第一个视图中

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

在第二个视图中

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

答案 1 :(得分:1)

你可以拥有一个实例变量并跟踪它是否是第一次出现视图,即。 BOOL isFirstTime请务必将YES中的viewDidLoad设置为setNavigationBarHidden:并将其传递给viewDidAppear中的- (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; }

{{1}}

答案 2 :(得分:-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时,您的导航栏将被隐藏。