导航控制器的差距

时间:2009-04-25 16:03:21

标签: iphone uinavigationcontroller uinavigationbar

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

谢谢大家!

3 个答案:

答案 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中的模拟状态栏。