2014-02-05 45 views
0

我的應用程序允許用戶從相機膠捲選擇照片或拍照,應用程序將照片保存到本地,然後轉到下一個視圖控制器並加載剛剛保存並顯示的圖像圖像視圖。圖像加載不正確在應用程序中

這是我用來獲取用戶想要的圖像並將其發送到我的發送圖片方法的代碼。

UIImage *image = info[UIImagePickerControllerEditedImage]; 
[self saveImage:image]; 
[picker dismissViewControllerAnimated:NO completion:NULL]; 
[self performSegueWithIdentifier:@"switch" sender:nil]; 

這是這樣的:

-(void)saveImage: (UIImage*)image{ 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString* path = [documentsDirectory stringByAppendingPathComponent:@"test.png"]; 
     NSData* data = UIImagePNGRepresentation(image); 
     [data writeToFile:path atomically:YES]; 
     printf("image saved"); 
    } 

該代碼運行,因爲它打印的圖像保存。該應用程序進入下一個視圖,這就是我建立了我的viewDidLoad:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    //[imageViewPreview setImage:self.secondImage]; 
    //imageViewPreview.image = self.secondImage; 
} 

我註釋掉了,我已經試過,但既不是這些作品的兩種方式。這是我如何試圖讓我的第二圖像加載:

-(UIImage*)secondImage{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent:@"test.png"]; 
    UIImage* image = [UIImage imageWithContentsOfFile:path]; 
    printf("image loaded"); 
    return image; 
} 

這裏有什麼問題?

+0

你試過'[imageViewPreview setImage:自secondImage]的''而不是= imageViewPreview.image self.secondImage'? –

+0

@ Unkn0wn.Bit應該是同樣的事情。 – rckoenes

+0

是的,那應該是一樣的。 –

回答

1

你應該做得更簡單。在你的第二個視圖控制器中添加一個公共的UIImage屬性。然後將第二個控制器導入第一個控制器。然後在prepareForSegue設置像這樣的圖片:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"switch"]) { 
     ClassOfDEstinationController *destinationController = segue.destinationViewController; 
     destinationController.image = image; 
    } 

} 
+0

最後,謝謝你! –

+0

沒問題:)。隨意給我一個複選標記。 – Mika

相關問題