0

我有一个与视图 B 相连的表格视图 A。在 A 中,顶部有一个导航栏,下面是表格。当我在 A 的表中按下一行时,B 被按下。在 B 的 viewWillAppear 中,我有以下代码。

-(void)viewWillAppear:(BOOL)animated
{
    self.wantsFullScreenLayout = YES;
    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
}

这使得视图扩展,以便在状态栏下方,我有导航栏和 UIView 重叠。我也有 viewWillDisappear

-(void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
        // back button was pressed.  We know this is true because self is no longer in the navigation stack.

        self.wantsFullScreenLayout = NO;
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar_bg.png"] forBarMetrics:UIBarMetricsDefault];
        self.navigationController.navigationBar.translucent = NO;
    }
}

因此,当用户按下后退按钮时,它将撤消全屏模式,以便视图和导航栏不会重叠。问题是,当我按下后退按钮并显示上一个屏幕 A 时,奇怪的是表格视图仍然与导航栏重叠。我什至尝试将 self.wantsFullScreenLayout = NO 放在 A 的 willViewAppear 中,但无济于事。A 不应该缩小表格视图并位于导航栏下方吗?谁能让我知道什么是磨损以及如何解决这个问题?

提前致谢!

4

1 回答 1

0

不要将代码放在viewWillDisappear方法中,而是尝试将相同的代码放在viewWillAppear前一个视图控制器的方法中。

于 2013-05-28T04:45:39.067 回答