Ios 如何将UIView控制器添加到UIView

Ios 如何将UIView控制器添加到UIView,ios,objective-c,uiview,uiviewcontroller,uikit,Ios,Objective C,Uiview,Uiviewcontroller,Uikit,我有一个自定义类,类型为UIViewController。我想将它添加到ui视图,以便可以将其输出到屏幕 ui视图称为engineView 我的自定义UIViewController称为引擎。控制器中有一个名为addImage的自定义方法 代码如下: Engine *engine = [[Engine alloc] init]; CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.hei

我有一个自定义类,类型为
UIViewController
。我想将它添加到
ui视图
,以便可以将其输出到屏幕

ui视图
称为engineView 我的自定义
UIViewController
称为引擎。控制器中有一个名为addImage的自定义方法

代码如下:

Engine *engine = [[Engine alloc] init];
CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
engine.view.frame = frame;

UIImage *image = [UIImage imageNamed:@"photo2.jpg"];
[engine addImage:image];

[engineView addSubview: engine.view];
这不会显示图像

但是,如果我通过故事板添加视图控制器,它似乎可以工作(如果我在
viewdilayoutsubviews
方法中添加图像。但是我想从父级
uiviewcontroller
以编程方式调用函数)

谁能告诉我我是怎么做的吗?

像这样试试

Engine *engine = (Engine *)[self.storyboard instantiateViewControllerWithIdentifier:@"EngineViewControllerStoryBoardID"];
设置故事板id的步骤

要将图像传递到引擎,请执行以下操作:

-->在Engine.h中创建
UIImage
属性

@Property UIImage*engineImage;

-->将该图像分配给Engine.m中的
UIIMageView

-(void)viewWillAppear:(BOOL)animated
{ 


    engineImageView.image = engineImage; // engineImageView is an example UIImageView replace it with your UIImageView

}
-->现在像这样发送图像
engine.engineImage=[UIImage ImageName:@“photo2.jpg

之后,您可以通过以下代码在视图控制器上添加图像

        UIImageView *image=[UIImageView alloc]initWithFrame:CGRectMake(x, y, your width, your Height);
        img setImage:[UIImage imageNamed:@"imageName"];
        [eng addSubview:image];

您可以在interface builder中设置情节提要标识符,并按照上面的建议使用它

  MyViewController *instance = [self.storyBoard instantiateViewControllerWithIdentifier:@"yourIdentifier"];

至于将ViewController添加到UIView,您也可以通过使用
addChildViewController
方法来实现这一点。

我得到了错误:故事板()不包含标识符为“EngineViewController ToryBoardId”的视图控制器……我通过替换第一行添加了这一行。这是否正确?我给出了一个故事板id示例(EngineViewController ToryBoardId)将其替换为您的故事板id EngineViewController。我不再收到该错误,但仍无法添加映像。如何调用engine类中的方法?[engine addImage:[UIImage imageName:@“imageName”];?这似乎没有任何作用。
  MyViewController *instance = [self.storyBoard instantiateViewControllerWithIdentifier:@"yourIdentifier"];