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

3 回答 3

2

第一眼

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

在第二个视图

-(void)viewDidLoad:(BOOL)animated
{
     [self.navigationController setNavigationBarHidden:NO animated:NO];
}
于 2013-10-16T00:09:43.360 回答
1

您可以只拥有一个实例变量并跟踪它是否是第一次出现视图,即。BOOL isFirstTime确保将其设置为YESin 您viewDidLoad并将其传递给setNavigationBarHidden:in 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;
}
于 2013-10-16T00:05:05.577 回答
-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 时,您的导航栏将被隐藏。

于 2013-10-16T00:02:56.523 回答