代码之家  ›  专栏  ›  技术社区  ›  tcurdt

仅对根UIViewController隐藏UINavigationBar

  •  5
  • tcurdt  · 技术社区  · 16 年前

    还有其他想法吗?

    4 回复  |  直到 15 年前
        1
  •  5
  •   cduck Daniel    13 年前

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

    语法如下: self.navigationController.navigationBarHidden = YES; 我总是有空白。

        2
  •  9
  •   Amnysia    15 年前

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        if([viewController isKindOfClass: [SomeClass class]])
            [self setNavigationBarHidden: NO];
        else
            [self setNavigationBarHidden: YES];
    }
    

        3
  •  0
  •   Thomas Müller    16 年前

    我的想法是

    不过,我还没有尝试过,也不知道它是否有效。只是一个尝试的想法。

        4
  •  0
  •   Louis Gerbarg    16 年前

    假设你处理了这个问题,一个选择是在你设置动画后更改navigationBarHidden。在离开的路上,没有好的地方可以处理这个问题,因为你希望弹出动画在栏设置动画后发生。最快的解决方案是隐藏条形图,然后手动运行运行循环约0.5秒,直到它变为动画,然后继续。它很恶心,但它很快,而且很有效。

    - (void)viewWillDisappear:(BOOL)animated {
      if (animated) {
         [self.navigationController.navigationBar setHidden:YES animated:YES];
      }
    
      //GROSS
      NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:0.5];
      while([[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate]);
    }