0

我在视图上有一个按钮。当我点击它时,它应该加载另一个视图,一个带有导航控制器的视图。到目前为止,我已经掌握了这个,按钮调用了这个方法:

-(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,但在状态栏大小的顶部有一个间隙,所以我可以看到下面的视图。有什么帮助吗?加载包含导航控制器的新视图的正确方法是什么?

谢谢你们!

4

3 回答 3

5

我通过放置以下解决了这个问题:

[optionsRootController pushViewController:myOptions animated:NO];

这一行:

[optionsRootController.view setFrame: [self.view bounds]];

好,易于!

于 2009-04-26T19:27:05.310 回答
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];
于 2009-04-25T16:09:40.613 回答
-1

笔尖中的视图是否适合整个屏幕?尝试关闭 IB 中的模拟状态栏。

于 2009-04-25T21:01:20.240 回答