【问题标题】:How to remove black space using Navigation Bar如何使用导航栏删除黑色空间
【发布时间】:2015-11-04 22:15:30
【问题描述】:

我正在使用导航控制器。

在我的第一个屏幕中,它们不需要NavigationBar。因为这是主屏幕。所以我使用以下代码隐藏它:

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

当我推送到新屏幕时,我正在使用以下代码显示 NavigationBar:

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

问题是当我从其他屏幕返回到我的 HomeScreen 时,我在导航栏的位置出现黑屏。

这是图片中的问题:

白色屏幕是我的 ViewController,它有导航栏,蓝色屏幕有导航栏。如何去除黑色部分。

【问题讨论】:

  • 图片链接已损坏。再次检查
  • 我没有足够的存储库来发布该图像...请投票我的问题以便我可以上传它

标签: ios xcode uinavigationcontroller uinavigationbar


【解决方案1】:

单击导航控制器并转到属性检查器并取消选中显示导航栏选项,如屏幕截图所示:

【讨论】:

  • 我仍然得到那个黑色空间
【解决方案2】:

试试这个

self.navigationItem.hidesBackButton = YES;

【讨论】:

  • 我不想隐藏后退按钮...我想当我从导航栏切换时,我不想看到因为要打开的屏幕没有而出现的黑色空间导航栏。
【解决方案3】:

有更好的方法来做到这一点。您需要做的就是创建UINavigationController 类的子类。设置UINavigationControllerDelegate。在类中添加以下方法。

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

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

【讨论】: