2015-05-13 34 views
2

我試圖將捕獲的圖像發送到另一個UIViewController發送捕獲的圖像到另一個UIViewController與prepareForSegue

所以,當我按下捕獲的按鈕,它正在拍照,我可以保存圖像在我的相機卷。但是當我想在另一個視圖中看到圖像時,我看不到它。

這是我的代碼:

- (IBAction)captureButton:(id)sender 
{ 
    [self.cameraViewController captureImageWithCompletionHander:^(id data) { 
     self.image = ([data isKindOfClass:[NSData class]]) ? [UIImage imageWithData:data] : data; 
     UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil); 
     [self performSegueWithIdentifier:@"savingSegue" sender:self]; 
    }]; 
} 

這是SEGUE方法的準備。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"savingSegue"]) { 
     PhotoSaveViewController *pvc = [[PhotoSaveViewController alloc] init]; 
     [pvc.imageView setImage:self.image]; 
    } 
} 

回答

0

我猜imageViewPhotoSaveViewController是出口並沒有設置在這一刻。你應該聲明有一些其他財產一樣

@property (nonatomic, retain) UIImage *inputImage; 

,並分配給在prepareForSegue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"savingSegue"]) { 
     PhotoSaveViewController *pvc = segue.destinationViewController; 
     pvc.inputImage = self.image; 
    } 
} 

然後做在PhotoSaveViewController如下:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.imageView.image = self.inputImage; 
} 

另一種方法,你可以創建它從代碼完全。分配Storyboard IDPhotoSaveViewController,然後執行以下操作:

- (IBAction)captureButton:(id)sender { 
    [self.cameraViewController captureImageWithCompletionHander:^(id data) { 
     self.image = ([data isKindOfClass:[NSData class]]) ? [UIImage imageWithData:data] : data; 
     UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil); 
     PhotoSaveViewController *dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"PhotoSaveViewControllerID"]; 
     dvc.inputImage = self.image; 
     [self.navigationController pushViewController:dvc animated:YES]; 
    }]; 
} 
+0

其實首先我是這樣做的。但我再也看不到圖像了。 –

+0

所以也許你的插座沒有連接? – Azat

+0

請看最新的答案。我沒有注意到代碼中的'PhotoSaveViewController'的另一個問題。現在我也修復了它 – Azat

2

如果你的第二個觀點是PhotoSaveViewController然後用這個替換您的prepareForSeque方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"savingSegue"]) { 
     PhotoSaveViewController *pvc = (PhotoSaveViewController *)segue.destinationViewController; 
     if (pvc) 
      [pvc.imageView setImage:self.image]; 
    } 
} 

事實上,這不是你的工作實例目的地UIViewController,您的UINavigationController已經做到了。

+0

當我使用它說它無法識別的選擇器發送到實例。所以應用程序崩潰。 –

+0

使用調試器檢查您用'segue.destinatonViewController'獲得的對象。如果它嵌入在「UINavigationController」或「UITabBarController」中,它可能不是你的ViewController。在這種情況下,你將不得不按照鏈接來獲取它。 – Blackus

相關問題