NavigationBar Hidding问题返回

时间:2013-09-05 12:03:10

标签: ios objective-c navigationbar

View1点我隐藏navigationBar中的viewDidLoad

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

然后我导航到显示View2

navigationBar
- (void)viewDidLoad
{
    [super viewDidLoad];

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

但是再次回到View1navigationBar无法隐藏,即使我曾尝试在pushViewController View2之后隐藏[self.navigationController pushViewController:View1 animated:YES]; [self.navigationController setNavigationBarHidden:YES];

viewWillAppear

我还试图在View1中隐藏navigationBar的导航并隐藏它,但是有一个难看的延迟,我觉得这不是一个好习惯。

所以任何人都可以帮我解决这个问题,如何正确隐藏View1回{{1}}?

5 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

[self.navigationController setNavigationBarHidden:YES];

首先,然后写

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

答案 3 :(得分:0)

ViewController1不会再次分配,因此不会调用viewDidLoad。
 您可以在viewWillAppear中执行此操作。但如果你说有延迟,你可以再做一件事。

您可以在ViewController2中获取ViewController1的引用。假设ViewController1是导航控制器中的第一个控制器,然后执行以下操作:

//ViewController2.m
- (IBAction)backButtonPressed:(id)sender{
 ViewController1 *view1 = [self.navigationController.viewControllers objectAtIndex:0];
[view1.navigationController setNavigationBarHidden:YES];

答案 4 :(得分:-1)

从[{1}} View2 View2navigation stack View1而不是deallocated获取View2。它在堆栈中。因此,当您弹出View1时,setNavigationBarHidden viewDidLoad不会被调用。所以隐藏导航栏的代码ViewWillAppear不会执行。因此,请将该代码放到ViewDidAppear- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES]; } ,因为每次View出现时都会调用这些方法。

{{1}}