添加子视图控制器

时间:2014-06-09 18:57:31

标签: ios objective-c

我有2个观看次数ParentViewControllerChildViewController;我想在ChildViewController内嵌套ParentViewController。我在Storyboard中设计了ParentViewControllerChildViewControllerParentViewController.m包含父项的逻辑,ChildViewController.m包含子项的逻辑。在ParentViewController.m中,我像这样添加孩子:

 ChildViewController *childVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildSBI"];
 [self addChildViewController:childVC];

我的问题:我如何在childVC内定位ParentViewController(即设定它的来源)。

似乎我想做类似以下的事情:

  1. Alloc init child
  2. 在孩子的视图上调用(void)addSubview:(UIView *)视图

1 个答案:

答案 0 :(得分:2)

  

如何在childViewController中定位childVC(即设置它的原点)。

请记住,视图控制器没有原点 - 只有其视图可以。要使视图控制器的内容出现在屏幕上,您需要一个视图来绘制它。您可以让一个视图控制器的视图出现在另一个视图控制器的视图层次结构中,并且它很容易用于故事板。

要在情节提要中的视图控制器之间设置父/子关系,请执行以下操作:

  • 将容器视图添加到父视图控制器的视图层次结构中。

  • 将“embed”segue从该容器视图拖到子视图控制器。

  • 您可以使用通常的-prepareForSegue:sender:方法让父控制器将数据传递给孩子。

如果您愿意,也可以通过编程方式进行设置,并且您获得的代码是一个良好的开端:

ChildViewController *childVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildSBI"];
[self addChildViewController:childVC];

之后,您的父视图控制器应设置子视图的位置并将其添加到父视图中,如下所示:

UIView *childView = childVC.view;
childView.frame = CGRectMake(150, 300, 100, 100); //use whatever coordinates you want
[self.view addSubview:childView];

Creating Custom Container Controllers中有更多详细信息,但您问题的基本答案是容器控制器应设置所包含控制器视图的大小和位置。