在TabBar应用程序中,子视图偏移20像素

时间:2011-02-08 23:50:55

标签: iphone uiviewcontroller uitabbarcontroller

我有一个标签栏应用程序,当我显示模态视图控制器时,内容屏幕偏移了大约20个像素到顶部和左侧。它看起来像这样:included image

我将从tabview的导航控制器(主视图)的子视图控制器(详细视图)中呈现此视图。

当我显示视图时,我隐藏了标签栏和导航栏,但状态栏保持可见。调整视图以使其居中(通过Interface Builder的模拟界面元素 - >视图模式:中心)并在控制器中调用'viewDidLoad'后更改视图的帧似乎不会改变它。

- (void)viewDidLoad {
// this still doesn't cause it to shift
self.view.frame = CGRectMake(0, 20, 320, 460);
}

调整此内容的方法是什么,以便正确显示内容区域?

我像这样启动子视图:

[detailController presentModalViewController:tvc animated:NO];          

应用程序的视图控制器层次结构:

在app delegate中创建了带有两个子导航控制器的标签视图,并将导航控制器添加到TabBar的视图控制器中:

tabBarController = [[UITabBarController alloc] init];   
tabBarController.viewControllers = [NSArray arrayWithObjects:tab1ViewController,    
                                    tab2ViewController, nil];

[window addSubview:tabBarController.view];

选项卡的每个视图控制器都创建为带有1个视图控制器的NavigationController:

// MainViewController inherits from UIViewController
[MainViewController *viewController = [[MainViewController alloc] initWithNib..];

tab1ViewController.viewControllers = [NSArray arrayWithObject:viewController];

由于tab1ViewController上的某些操作,使用'pushViewController'启动了详细视图控制器:

DetailController *detailController = [[DetailController alloc] 
                                                 initWithNibName:@"DetailView" 
                                                 bundle:[NSBundle mainBundle]];

[self.navigationController pushViewController:detailController animated:YES];

[detailController release];

我正在尝试启动问题控制器的detailController。

1 个答案:

答案 0 :(得分:0)

要立即检查的一些事情:“viewDidLoad”实际上是否被调用? 如果是这样,self.view.frame在赋值后设置为什么? 将NSLog放在最后,打印出x,y,宽度,高度,看看有什么。

另外,由于故障vc是模态的,它将占据整个屏幕。 “在iPhone和iPod touch设备上,modalViewController的视图始终全屏显示。”

HTH, 麦克