我有一个标签栏应用程序,当我显示模态视图控制器时,内容屏幕偏移了大约20个像素到顶部和左侧。它看起来像这样:
我将从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。
答案 0 :(得分:0)
要立即检查的一些事情:“viewDidLoad”实际上是否被调用? 如果是这样,self.view.frame在赋值后设置为什么? 将NSLog放在最后,打印出x,y,宽度,高度,看看有什么。
另外,由于故障vc是模态的,它将占据整个屏幕。 “在iPhone和iPod touch设备上,modalViewController的视图始终全屏显示。”
HTH, 麦克