我正在以编程方式使用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的视图。
有什么想法导致这种情况以及如何将其删除?
谢谢,
杰克
答案 0 :(得分:2)
UINavigationController
期望是窗口中的根视图,因此它包含状态栏。如果将其放入包含状态栏的另一个视图中,则会绘制第二个空状态栏,其类似于“在导航控制器上方栖息的恼人灰色条”。
答案 1 :(得分:1)
初始化UINavigationController时,它会预期iPhone状态栏出现在屏幕顶部。因此,为了适应这种情况,视图基本上向下移动了一点。但是,由于我的UINavigationController在我的RootViewController中,因此UINavigationController不必适应状态栏,因此可以使用放置在RootViewController的viewDidLoad方法中的以下行“向上移动”适当的距离:
self.navigationController.view.frame = CGRectMake(0, -20, 320, 480);
现在程序运行时,我的视图顶部没有灰色条/灰色空间。
感谢您的帮助,指出了我正确的方向。
杰克