Iphone:通过segue将UIImage传输到另一个控制器

时间:2011-11-22 08:44:06

标签: iphone ios sdk uiimage

我有一个我不明白的图像传输问题。 我想在用户执行时在另一个控制器上显示UIImageView的UIImage 一个“长按手势”。将显示另一个控制器,但不会显示我传输的图像。

按钮通过模态故事板segue与第三个控制器连接。在那里,用户能够捕获图像。在“ok”时,控制器切换回第一个,捕获的图像将显示在UIImageView中。没有问题,直到那里。 为了实现对其他控制器的长按手势指南,我将手势放到故事板并将按钮连接到它。如果用户执行手势,则将执行以下功能

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if([[segue identifier] isEqualToString:@"toPreview"]){
        PreviewViewController *pvc = (PreviewViewController *)[segue destinationViewController];
        [pvc setImage:signatureView.image];
    }
}

signatureView是一个UIImageView,用于显示用户捕获的图像(在本例中为签名)。 “setImage:(UIImage *)”函数是我尝试过的众多可能性之一。

以下是应显示图像的控制器代码

@interface PreviewViewController : UIViewController

@property(nonatomic, retain) IBOutlet UIImage *previewImage;
@property (weak, nonatomic) IBOutlet UIImageView *previewImageView;

- (void) setImage:(UIImage *)image;

@end

@implementation PreviewViewController

@synthesize previewImage;
@synthesize previewImageView;

- (void) setImage:(UIImage *)image {
    previewImage = image;
    previewImageView.image = previewImage;
    [previewImageView setNeedsDisplay];
}

...

正如我已经说过的,我尝试了很多可能性,但没有在previewImageView中显示传递的UIImage。我试图直接从第一个控制器写下previewImageView的图像,我传递了第一个控制器的完整UIImageView,...

我不明白我的错。有谁能够帮我? 我正在使用XCode 4.2和iOS 5 SDK

2 个答案:

答案 0 :(得分:0)

您无法调用[pvc setImage:signatureView.image];,因为调用prepareForSegue:时,signatureView不存在。

您可以传递图片的名称并在viewWillAppear中设置。

- (void)viewWillAppear {
    [super viewWillAppear];
    [[self signatureView] setImage: [UIImage imageNamed: imageName]];
}

答案 1 :(得分:0)

我认为在iOS开发中的视图控制器之间传递数据称为协议或@protocol。我不想成为那些说“参考”的人之一。但这就是我的所作所为。欢呼声