0

View1我隐藏navigationBarviewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES];
}

然后我导航到View2我显示的位置navigationBar

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.navigationController setNavigationBarHidden:NO];
    self.title = @"Title";
}

但是View1再回头,它navigationBar并没有隐藏,即使我确实试图在pushViewControllerin之后隐藏它View2

[self.navigationController pushViewController:View1 animated:YES];
[self.navigationController setNavigationBarHidden:YES];

我还尝试viewWillAppear在 View1 中隐藏导航并将其隐藏,但有一个难看的延迟,我认为这不是一个好习惯。

那么任何人都可以帮助我解决这个问题,我怎样才能正确隐藏navigationBaron back to View1

4

5 回答 5

1

做你想做的事的最佳实践是在你的第一个 viewController 中放下面:

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

- (void)viewWillDisappear:(BOOL)animated{
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];
}
于 2013-09-05T12:10:50.577 回答
0
-(void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationController setNavigationBarHidden:YES]; 
}
于 2013-09-05T12:08:27.457 回答
0

你的代码是正确的,但你需要这样写:

[self.navigationController setNavigationBarHidden:YES];

先写,再写

[self.navigationController pushViewController:View1 animated:YES];
于 2013-09-05T12:09:36.107 回答
0

不会再次分配,因此ViewController1不会调用 viewDidLoad。
不过你可以进去viewWillAppear。但如果你说有延迟,你可以再做一件事。

您可以在 ViewController2 中获取 ViewController1 的引用。假设 ViewController1 是导航控制器中的第一个控制器,那么这样做:

//ViewController2.m
- (IBAction)backButtonPressed:(id)sender{
 ViewController1 *view1 = [self.navigationController.viewControllers objectAtIndex:0];
[view1.navigationController setNavigationBarHidden:YES];
于 2013-09-05T12:10:51.223 回答
-1

View2看看你什么时候从里面推View2navigation stack不是View1得到deallocated。它在堆栈中。所以当你弹出View2那个时候View1viewDidLoad 不会被调用。所以你setNavigationBarHidden隐藏导航栏的代码不会执行。因此,将代码放入ViewWillAppearViewDidAppear因为每次 View 出现时都会调用这些方法。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES];
}
于 2013-09-05T12:21:04.537 回答