2014-08-28 64 views
0

我有一個類型爲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調用函數吧。

任何人都可以告訴我,我該怎麼辦呢?

回答

0

嘗試這樣的..

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

0
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]; 
1

enter image description here

您可以在Interface Builder中設置故事板識別您的瀏覽器添加圖片和CA使用它像上面建議。

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

至於添加視圖控制器來的UIView可以通過使用addChildViewController方法也做到這一點。