如何在iOS 5中将导航控制器添加到我自己的容器视图控制器?

时间:2012-04-14 14:29:27

标签: ios5 uiviewcontroller uinavigationcontroller splitcontainer

我正在尝试创建一个容器视图控制器(见截图),我想在右边添加一个导航控制器,但是我遇到了一些问题。你能救我吗?

当我在父控制器(viewDidLoad)中添加此代码时,我看到具有其他位置/大小的视图,我猜是因为我无法访问导航控制器容器视图。

尝试:

[self addChildViewController:_detailNavigationController];
_detailNavigationController.view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:_detailNavigationController.view];

还有这个,但只适用于第一个视图,显然。

[self addChildViewController:_detailNavigationController];
_detailNavigationController.topViewController.view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:_detailNavigationController..topViewController.view];

尝试获取导航控制器容器视图,但无法正常工作,我在屏幕上看不到任何内容并使用调试器我意识到视图为零。除此之外,苹果可能不喜欢这样。

[self addChildViewController:_detailNavigationController];
UIView *view = [_detailNavigationController valueForKey:@"_containerView"];
view.frame = CGRectMake(256, 49, 768, 651);
[self.view addSubview:view];

我错过了什么吗? 您知道如何在我自己的自定义容器视图控制器中添加导航控制器吗? 提前谢谢!

截图: http://img803.imageshack.us/img803/2464/screennjz.png

1 个答案:

答案 0 :(得分:1)

我有自定义类MasterViewController和DetailedViewController是UITableViewController的子类。 NavigationController是UINavigationController的子类,SplitViewController是UISplitViewController的子类。

你可以看到它有效,但是当我从导航控制器弹出一个视图时我遇到了问题。如果你发现如何解决这个问题,请告诉我。

enter image description here

    MasterViewController *master = [[MasterViewController alloc] init];

    NavigationController *masterNav = [[NavigationController alloc] initWithRootViewController:master];

    DetailedViewController *detailed = [[DetailedViewController alloc] init];

    NavigationController *detailedNav = [[NavigationController alloc] initWithRootViewController:detailed];

    myVC = [[SplitViewController alloc] init];

    [myVC setViewControllers:[NSArray arrayWithObjects:masterNav, detailedNav, nil]];