2012-12-07 78 views
0

我想出现在用“ViewController”拍摄的“PreviewViewController”图片的“UIImageView”中。UIImagePickerController图像,显示到另一个类

但我不能。

请告诉我

ViewController.m

-(void)imagePickerController:(UIImagePickerController *)pic didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [imagePicker dismissViewControllerAnimated:YES completion:NO]; 

    UIImage *originalImage; 
    originalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 

CGSize size = { 100, 200 }; 
UIGraphicsBeginImageContext(size); 

CGRect rect; 
rect.origin = CGPointZero; 
rect.size = size; 
[originalImage drawInRect:rect]; 
UIImage* shrinkedImage; 
shrinkedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

CGRect r = CGRectMake(0, 60, 100, 100); 
CGImageRef cgImage = CGImageCreateWithImageInRect(shrinkedImage.CGImage, r); 
iconImage = [UIImage imageWithCGImage:cgImage]; 
UIImageWriteToSavedPhotosAlbum (iconImage, nil, nil , nil); 

// This problem!!! 
PreviewViewController *p = [[PreviewViewController alloc] init]; 
p.imagePreview.image = iconImage; 
[self presentViewController:p animated:YES completion:NO]; 
} 

PreviewViewController.h

@property (nonatomic) UIImageView *imagePreview; 

回答

1

您是否创建了一个可以接受你的iconImage一个UIImageView?
乍看之下,我想说的是,当你试图给它分配一个图像时,就是p.imagePreview == nil

如果它是在.xib中创建的,请确保插座已连接。


从您的意见我知道你正在创建viewDidLoad您的UIImageView,这往往是问的看法之前,往屏幕不叫(有办法,迫使它迟早追加)。
这意味着p.imagePreview可能是nil当你在那里分配你的图像。
您是否尝试将breakpointNSLog(@"%@", p.imagePreview);以查看实例是否有效?
如果是nil那时我至少有两种方法可以解决这个问题。


您需要修改的UIViewController生命周期理解为什么你p.imagePreview是nil
我建议你在UIViewController生命周期方法的每个方法的开始处放置NSLog()。 (所有viewDid ...,viewWill ...)都能清晰地了解生命周期,并了解系统何时获取调用。

至于你的问题,你可以定义@property (nonatomic, strong) UIImage *anImage并在你的图像视图中存储想要使用的图像,并在viewDidLoad中初始化UIImageView时使用该图像。
由于您没有使用.xib,因此您应该考虑覆盖loadView

+0

我不使用XIB和StoryBoard.Have是否创建了一个可以接收iconImage的UIImageView?>你是什么意思? – onion

+0

我想将UIimageViewmade(imagePreview)放到另一个类(PreviewViewController)中。 我制作了PreviewViewController的imagePreview。 – onion

+0

@onion在你的类中:PreviewViewController是你在'init'中做了这样的事情:'[[UIImageView alloc] initWithFrame];'? –

相关问题