使用prepareforSgue将捕获的图像发送到另一个视图

时间:2015-06-05 12:35:43

标签: ios objective-c segue

因此,当我按下拍摄按钮时,它正在拍照并且我可以将图像保存在相机胶卷中。但是当我想在另一个视图中看到图像时,我看不到它。

这是我的代码:

- (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];
    }
}

2 个答案:

答案 0 :(得分:0)

听起来您的目标视图控制器是UINavigationController。我猜它的顶视图控制器是你想要的。您可以像这样访问它(尽管您可能希望添加类型检查):

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

答案 1 :(得分:0)

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
 if([segue.identifier isEqualToString:@"savingSegue"])
 {
    YourNextViewController*ImageView=segue.destinationViewController;
    UIImage*clickedImage=capturedPicImageView.image;
   ImageView.passedImage=clickedImage;
    // NSLog(@"%@",editView.editPhotoImgView.image);
 }
}

(并在YourNextViewController中创建UIImage*clickedImage并为其提供属性。并且不要忘记在viewDidLoad中分配。希望这会有所帮助。