2012-12-07 103 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];'? –

相關問題