【问题标题】:how do i add a UIView controller to a UIView如何将 UIView 控制器添加到 UIView
【发布时间】:2023-03-21 02:47:02
【问题描述】:

我有一个UIViewController 类型的自定义类。我想将它添加到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 调用函数。

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

【问题讨论】:

    标签: ios objective-c uiview uiviewcontroller uikit


    【解决方案1】:

    您可以在界面生成器中设置故事板标识符,并可以像上面建议的那样使用它。

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

    至于向 UIView 添加 ViewController,您也可以使用 addChildViewControllermethod 来实现。

    【讨论】:

      【解决方案2】:
       try this..
      
           Engine *eng=[self.storyboardinstantiateViewControllerWithIdentifier:@"YourStoryboradId"];
      
      *you can set storyboard id by going in Identity Inspector.
      

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

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

      【讨论】:

        【解决方案3】:

        像这样尝试..

        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 imageNamed:@"photo2.jpg"];

        【讨论】:

        • 我收到错误:Storyboard () 不包含标识符为“EngineViewControllerStoryBoardID”的视图控制器...我通过替换第一行添加了这一行。这是正确的吗?
        • 我给出了示例故事板 id(EngineViewControllerStoryBoardID) 将其替换为 EngineViewController 的故事板 id
        • 我不再收到该错误,但我仍然无法添加图像。我如何调用引擎类中的方法? [引擎 addImage:[UIImage imageNamed:@"imageName"];?这似乎没有任何作用。
        猜你喜欢
        • 1970-01-01
        • 2020-12-09
        • 2014-08-23
        • 1970-01-01
        • 2014-05-16
        • 2019-05-09
        • 2021-05-07
        • 2023-04-05
        • 2016-08-17
        相关资源
        最近更新 更多