我在视图上有一个按钮。当我点击它时,它应该加载另一个视图,一个带有novigation控制器。到目前为止,我已经有了这个,按钮调用这个方法:
-(IBAction)loadOptionsView:(id)sender {
if (self.optionsRootController == nil) {
//optionsRootController is declared as: UINavigationController *optionsRootController;
optionsRootController = [[UINavigationController alloc] init];
//Options is a UIViewController
Options *myOptions = [[Options alloc] initWithNibName:@"OptionsMenu" bundle:nil];
[optionsRootController pushViewController:myOptions animated:NO];
[myOptions release];
}
[self.view addSubview:optionsRootController.view];
}
当我点击按钮时会发生什么,它会在当前屏幕的顶部加载xib文件OptionsMenu,但状态栏大小顶部有一个间隙,所以我可以看到下面的视图。有帮助吗?加载包含导航控制器的新视图的正确方法是什么?
谢谢大家!
答案 0 :(得分:5)
我通过以下方式解决了这个问题:
[optionsRootController pushViewController:myOptions animated:NO];
这一行:
[optionsRootController.view setFrame: [self.view bounds]];
很好,很容易!
答案 1 :(得分:1)
我认为UINavigationController的指定初始化程序是
- (id) initWithRootController:(UIViewController *)rootController
因此,您的上述代码将更好地表示为
//optionsRootController is declared as: UINavigationController *optionsRootController;
//Options is a UIViewController
Options *myOptions = [[Options alloc] initWithNibName:@"OptionsMenu" bundle:nil];
optionsRootController = [[UINavigationController alloc] initWithRootController: myOptions];
[myOptions release];
答案 2 :(得分:-1)
笔尖中的VIew是否适合整个屏幕?尝试关闭IB中的模拟状态栏。