0

我在另一个导航控制器内的视图控制器内添加了一个导航控制器......哈哈

无论如何,由于这种结构,我对推送到“子”导航控制器的任何视图都有问题。因为它只适合“父”导航控制器的格内,它将推送的视图内容向下推约 20/40pxl ...

我想知道如何阻止这种情况发生。这里有两张图片向您展示正在发生的事情。

在此处输入图像描述

标签在界面生成器中明显居中的位置

在此处输入图像描述

这是我到目前为止的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    // Init the (sub)navigationController
    otherNav = [[UINavigationController alloc] init];
    // Add this (sub)NavController to the current viewcontroller (which is inside the (parent)navcontroller)
    [self.view addSubview:otherNav.view];
    // Hide the (sub)NavControllerbar
    otherNav.navigationBar.hidden = YES;

    // Load a detial view into the (sub)NavController
    DetailViewController *detailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
    [otherNav pushViewController:detailView animated:NO];
}

otherNav 也在 .h 文件中设置,以便在此视图中进行全局访问。

4

1 回答 1

1

当“超级” NavigationBar 可见时,self.view.frame.height 为:

  • 480-20-44(实际视图高度-状态栏高度-导航栏高度)。

您的问题有 2 个解决方案。

1. 为简单起见,我想说的是,如果您唯一的问题是使其集中化。

    [self.view addSubview:otherNav.view];
    [otherNav.view setCenter:self.view.center];

这将使您的标签中心对齐。

2.不过,如果您使用的是界面生成器;

  1. 选择xib文件。
  2. 选择视图。
  3. 打开实用程序。
  4. 将顶部栏设置为导航栏。

那么您将对齐的东西将在设备/模拟器上或您正在测试的任何东西上得到。

于 2012-06-13T21:28:48.960 回答