如何添加一个UIView控制器到UIView

问题描述:

我有一个类型为UIViewController的自定义类。我想将它添加到UIView,以便它可以用于输出到屏幕。如何添加一个UIView控制器到UIView

UIView被称为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]; 

此不显示图像。

但是如果我通过故事板添加视图控制器,似乎工作(如果我在viewdidlayoutsubviews方法中添加图像。但我想从父UIViewCcontroller programically调用函数吧。

任何人都可以告诉我,我该怎么办呢?

尝试这样的..

Engine *engine = (Engine *)[self.storyboard instantiateViewControllerWithIdentifier:@"EngineViewControllerStoryBoardID"]; 

设置故事板ID
enter image description here

的图像传递到发动机:

- >创建Engine.h一个UIImage属性

@Property UIImage * engineImage;

- >该图像分配给UIIMageView在Engine.m

-(void)viewWillAppear:(BOOL)animated 
{ 


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

} 

- >现在发送图像像 engine.engineImage =[UIImage imageNamed:@"photo2.jpg“];

+0

我得到的错误:故事板()不包含标识符为'EngineViewControllerStoryBoardID'的视图控制器...我通过替换第一行添加了这一行。它是否正确? – X0r0N 2014-08-28 05:58:27

+0

我给示例故事板ID(EngineViewControllerStoryBoardID)取代与您的故事板ID EngineViewController – raki 2014-08-28 06:02:15

+0

我不再得到该错误,但我仍然无法添加图像。我如何在引擎类中调用方法? [引擎addImage:[UIImage imageNamed:@“imageName”];?这似乎没有做任何事情。 – X0r0N 2014-08-28 06:29:26

try this.. 

    Engine *eng=[self.storyboardinstantiateViewControllerWithIdentifier:@"YourStoryboradId"]; 

*you can set storyboard id by going in Identity Inspector. 

Setting StoryboardId 之后,你可以通过下面的代码

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

enter image description here

您可以在Interface Builder中设置故事板识别您的浏览器添加图片和CA使用它像上面建议。

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

至于添加视图控制器来的UIView可以通过使用addChildViewController方法也做到这一点。