Ios 添加子视图控制器

Ios 添加子视图控制器,ios,objective-c,Ios,Objective C,我有两个视图,ParentViewController和ChildViewController;我想将ChildViewController嵌套在ParentViewController中。我在故事板中设计了ParentViewController和ChildViewControllerParentViewController.m包含父对象的逻辑,而ChildViewController.m包含子对象的逻辑。在ParentViewController.m中,我添加了如下子级: ChildVie

我有两个视图,
ParentViewController
ChildViewController
;我想将
ChildViewController
嵌套在
ParentViewController
中。我在故事板中设计了
ParentViewController
ChildViewController
ParentViewController.m
包含父对象的逻辑,而
ChildViewController.m
包含子对象的逻辑。在
ParentViewController.m
中,我添加了如下子级:

 ChildViewController *childVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildSBI"];
 [self addChildViewController:childVC];
我的问题:如何在
ParentViewController
中定位
childVC
(即设置其原点)

似乎我想做如下事情:

  • 异基因起始子代
  • 在子视图上调用(void)addSubview:(UIView*)视图
  • 如何在ParentViewController中定位childVC(即设置其原点)

    请记住,视图控制器没有原点,只有其视图有原点。要使视图控制器的内容显示在屏幕上,您需要一个视图来将其绘制进来。您可以让一个视图控制器的视图显示在另一个视图控制器的视图层次结构中,而且使用故事板非常容易

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

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

    • 将“嵌入”序列从该容器视图拖动到子视图控制器

    • 您可以使用通常的
      -prepareforsgue: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];
    

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

    谢谢您的提示。那么,在实例化父对象时,是否会自动调用prepareForSegue?我计划在viewDidLoad中调用addChildViewController,因为childview将始终是这样present@Apollo是的,如果使用嵌入序列,则子视图控制器将被实例化,并且当父控制器加载其视图时将调用
    -prepareforsgue:sender:
    。感谢您提供非常详细的答案和更新的编程解决方案。我的朋友非常乐于助人。