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

use*_*149 5 uiviewcontroller uiview ipad ios

我正在制作报刊亭应用,我需要在一个视图中使用多个组件.我有一个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];
Run Code Online (Sandbox Code Playgroud)

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

addChildViewController:
willMoveToParentViewController:
didMoveToParentViewController:
Run Code Online (Sandbox Code Playgroud)

Gra*_*ROB 20

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

要添加控制器,您可以执行此操作

   [self addChildViewController:childViewController];             
   childViewController.view.frame = [self frameForChildController];
   [self.view addSubview:childViewController.view];
   [childViewController didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

您可以在View Controller文档中了解有关它的更多信息

  • 我不认为在故事板中这样做是一种"更好的方法". (12认同)
  • 这是正确的,我还建议在使用代码之前总是使用故事板,这是一个更好的方法.这是一个很好的链接:http://sandmoose.com/post/35714028270/storyboards-with-custom-container-view-controllers (5认同)