UIViewController在另一个UIViewController里面,有可能吗?

时间:2014-02-07 00:22:15

标签: ios ipad uiview uiviewcontroller

我正在制作报刊亭应用,我需要在一个视图中使用多个组件。我有UIViewController显示和管理pdf(缩放,滚动等等),但我不希望它是全屏而是我想让它像另一个UIView UIViewController顶部有菜单,底部有页码和其他工具。两者都是UIViewController的子类......我已经分开工作了。我只想把pdf查看器放在另一个里面。可能吗?这里有一些我想要的代码(假设在viewDidLoad里面)......但显然不起作用。任何帮助表示赞赏。它也必须是IOS 5.1.1兼容及以上

    NSString *path = [[NSBundle mainBundle] pathForResource:@"myPdf" ofType:@"pdf"];
    PDFViewController *page = [[PDFViewController alloc] initWithPDFAtPath:path];
    //pdfView is a UIView of size 600x600 right in the middle
    [self setPdfView:[page view]]; //this doest work... but it's basically what I want instead of presenting a viewController
    //[self presentViewController:page animated:YES completion:NULL];

我也知道这一点,但我不明白......如果这是我想要一些指导的方式:

addChildViewController:
willMoveToParentViewController:
didMoveToParentViewController:

1 个答案:

答案 0 :(得分:20)

从iOS 5开始,您可以执行View Controller Containment,它允许您将子视图控制器添加到父视图控制器中。子视图控制器可以像通常那样管理所有逻辑,但子控制器的视图可以匹配您喜欢的任何帧/位置。

要添加控制器,您可以

   [self addChildViewController:childViewController];             
   childViewController.view.frame = [self frameForChildController];
   [self.view addSubview:childViewController.view];
   [childViewController didMoveToParentViewController:self];

您可以在View Controller Documentation

中详细了解相关信息