尝试使用ImagePickerController在PresentViewController中设置图像

时间:2013-10-12 05:53:16

标签: ios objective-c

我有一个带有2个ViewControllers的故事板,第一个ViewController有一个按钮从相册中选择一张照片。第二个ViewController有一个ImageView。 结果是黑屏。

这是委托方法:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:NO completion:nil];
    UIImage * selectedIMG = [info objectForKey:UIImagePickerControllerOriginalImage];
    VCImageEditingViewController *ieVC = [self.storyboard instantiateViewControllerWithIdentifier:@"VCImageEditingViewController"];
    ieVC.selectedIMG = selectedIMG;
    [self presentViewController: ieVC animated:NO completion:nil];
}

在VCImageEditingViewController.m中:

    -(void)loadView
{
    if (self.selectedIMG) {
       self.imageDisplayed.image = self.selectedIMG;
    }
    else{
        UIImage *image = [UIImage imageNamed:@"hat.jpg"];
        self.imageDisplayed.image = image;
    }
}

即使我更改了if语句以显示" hat"两张照片中的照片都显示我是黑屏,所以我很确定它与图像选择器有关。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为问题在于您为故事板中设置的控制器覆盖了loadView。

文档说的是loadView:

如果使用Interface Builder创建视图并初始化视图控制器,则不得覆盖此方法。 ....

如果要对视图执行任何其他初始化,请在viewDidLoad方法中执行此操作。

尝试覆盖-(void) viewDidLoad,并设置ImageView的图像(假设您已将self.imageDisplay设置为视图控制器的视图的子视图)。

答案 1 :(得分:0)

两件事:

  • 当您使用loadView并致电viewDidLoad
  • 时,您正在使用[super viewDidLoad]
  • 行:[self.view sendSubviewToBack:self.imageDisplayed];不会在图片视图上显示图片,应为:self.imageDisplayed.image = self.selectedIMG;