使用UINavigationController弹出到上一个视图控制器时屏幕下的有线黑色空间

时间:2013-06-29 05:01:20

标签: ios uiviewcontroller uinavigationcontroller uinavigationbar

我正在使用UINavigationController来引导某些视图controllers。在某些视图控制器中,我不想使用UINavigationBar,但在其他一些我可能会使用。现在,我尝试使用UINavigationBar将一个视图控制器弹出到上一个隐藏UINavigationBar的视图控制器。但是,当开启时,屏幕下方有一个有线黑色空间。旋转屏幕后,空间将消失。

普通视图控制器A应该是这样的:

enter image description here

按下文本按钮时,将按下视图控制器B,如下所示: enter image description here

单击导航栏上的后退按钮。 A会出来。但底部有一个黑色空间。

enter image description here

如果旋转屏幕,空间将消失。而且在A的- (void)viewWillAppear:(BOOL)animated方法中,我隐藏了导航栏并让屏幕自动旋转。

- (void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];
    [self willAnimateRotationToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:0];
}

这种情况有什么不对?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我在后退按钮操作方法中添加了setNavigationBarHidden:方法。有用。如果我在viewWillDisappear:方法或其他方法中添加此方法,它似乎不起作用。导航栏将对下一个出现的视图控制器生效。这意味着,导航堆栈中的下一个视图控制器中将存在黑色空间。

最后,我为方法中的后退按钮和setNavigationBarHidden:YES添加了一个动作方法,如下所示:

- (void)backBtnClicked:(id)sender
{
    [self.navigationController popViewControllerAnimated:NO];
    [self.navigationController setNavigationBarHidden:YES];
}