在ViewDidLoad上的容器视图中加载图像

时间:2015-08-11 15:40:24

标签: ios objective-c uiview containers

我对视图层次结构有疑问:

我目前有一个HomeViewController,在登录屏幕后加载到视图中。 HomeViewController有一个ContainerView,其中嵌入了SubViewController。加载主视图时,最初会隐藏此容器。当我触发一个动作(通过UIButton)到#34;取消隐藏"容器,我试图在viewDidLoad期间在SubViewController中呈现的HomeViewController中加载图像。

我面临的问题是,无论出于何种原因,我似乎无法在SubViewController中显示图像。

FYI :我渲染此图片的方式如下:

  1. HomeViewController的viewDidLoad上,我正在以编程方式拍摄从保存的用户数据生成的UIView屏幕截图。此UIView显示在HomeViewController
  2. 的视图中
  3. 当用户点击某个按钮时,我正在取消隐藏,现在会显示SubViewControllerContainerView中嵌入的视图。
  4. 我似乎无法将屏幕截图图像(保存为imageSS)显示在SubViewController中。我已经尝试在加载SubViewController时抑制HomeViewController的viewDidLoad方法,然后在按下按钮时调用SubViewController viewDidLoad来显示它,但也没有运气。

    这可能会令人困惑,但它应该很容易 - 我不知道为什么我无法让它发挥作用。如果有人可以帮助我,我会很感激。谢谢!

    以下是我目前正在尝试的代码:此方法位于HomeViewController.m

    - (void)takeScreenshot:(id)sender {
    
        UIGraphicsBeginImageContextWithOptions(_homeRenderImage.bounds.size, NO, 0.0);
        [_homeRenderImage drawViewHierarchyInRect:_homeRenderImage.bounds afterScreenUpdates:YES];
        UIImage *imageSS = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        SubViewController *pvc = [[SubViewController alloc] init];
        userImage = imageSS;
    
        [pvc loadImage];
    
    }
    

    以下是我在SubViewController.m中使用的方法: 注意:userImage是这些控制器之间的共享属性。我已经测试过这个共享工作

    - (void)loadImage {
        _subImage.image = userImage;
    }
    

1 个答案:

答案 0 :(得分:0)

我感到愚蠢 - 我需要做的就是在viewWillAppear方法中调用loadImage方法:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear: animated];
    [self loadImage];
}