删除UITableView中UINavigationController上方的灰色条

时间:2011-06-01 11:50:08

标签: iphone objective-c ios uitableview uinavigationcontroller

我正在以编程方式使用UINavigationController创建一个UITableView:

- (void) displayView:(int)intNewView{

    NSLog(@"%i", intNewView);
    [currentView.view removeFromSuperview];
    [currentView release];

    switch (intNewView) {
        ......

        case 5:
            vc = [[RootViewController alloc] init];
            currentView = [[UINavigationController alloc] initWithRootViewController:vc];
            [currentView setTitle:@"Events"];
            break;
    }

    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:0.5];

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
                           forView:self.view 
                             cache:YES];

    [self.view addSubview:currentView.view];

    [UIView commitAnimations];
}

然而,当视图出现时,导航控制器上方有一个恼人的灰色条,我的其他视图都没有受此影响。只是使用UITableView和NavigationController的视图。

有什么想法导致这种情况以及如何将其删除?

谢谢,

杰克

2 个答案:

答案 0 :(得分:2)

UINavigationController期望是窗口中的根视图,因此它包含状态栏。如果将其放入包含状态栏的另一个视图中,则会绘制第二个空状态栏,其类似于“在导航控制器上方栖息的恼人灰色条”。

答案 1 :(得分:1)

初始化UINavigationController时,它会预期iPhone状态栏出现在屏幕顶部。因此,为了适应这种情况,视图基本上向下移动了一点。但是,由于我的UINavigationController在我的RootViewController中,因此UINavigationController不必适应状态栏,因此可以使用放置在RootViewController的viewDidLoad方法中的以下行“向上移动”适当的距离:

self.navigationController.view.frame = CGRectMake(0, -20, 320, 480);

现在程序运行时,我的视图顶部没有灰色条/灰色空间。

感谢您的帮助,指出了我正确的方向。

杰克