隐藏导航栏

时间:2011-07-01 07:34:53

标签: objective-c ios uinavigationcontroller

我有3个观看次数。 (比如说第1,第2,第3)。我已经在第一个推送第二个视图(有一个加载视图方法)。在第二个视图中,我使用initWithFrame(继承自UIWebView)创建了第三个视图。在第二个视图中,我写了self.view = 3rd view。

现在我想在第三视图中隐藏第二视图的导航栏(即,当用户触摸第三视图屏幕,即UIWebView时)。我使用手势进行了触摸识别,但我无法隐藏导航栏。

第3个视图不支持self.navigationController。如果我在3rd中创建第二个视图的对象,它不会隐藏导航栏。有人能帮助我吗?

4 个答案:

答案 0 :(得分:32)

确定。因此,您需要在为该选项卡创建导航控制器后立即隐藏导航栏。按下视图控制器后,您无法调整此值(据我所知)。

如果您希望第一个视图顶部没有导航栏,请在最初声明导航控制器的appDelegate中使用它:

localNavigationController = [[UINavigationController alloc] initWithRootViewController:theViewController];
[localNavigationController setNavigationBarHidden:YES animated:YES];

如果您希望隐藏之后的视图,那么您需要一个viewController用于后续视图,您将不得不添加

[[self navigationController] setNavigationBarHidden:YES animated:YES];

在你打电话之前:

[[self navigationController] pushViewController:theThirdViewController animated:YES];

希望这有帮助。

答案 1 :(得分:17)

实施这个:

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

在分配第3个视图之前。这是self.view =第3个视图

答案 2 :(得分:0)

请注意,必须在viewWillAppear方法中添加代码

-(void) viewWillAppear:(BOOL)animated
{
      self.navigationController.navigationBar.hidden = YES;
}

答案 3 :(得分:-1)

- (void)viewDidLoad 
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

     [[self navigationController] setNavigationBarHidden:YES animated:YES];
    //[self dismissViewControllerAnimated:YES completion:NULL];
}