2011-11-22 39 views
2

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

该按钮通过模态故事板连接到第三个控制器。用户可以捕捉图像。在“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 *)”函数是我尝试过的许多可能性之一。

这里是控制器的代码,正如我已经说过我尝试了许多可能性,但没什么previewImageView中显示的通过的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的图像,我通过了第一个控制器的完整UIImageView,...

我不明白我的错是什么。有谁能够帮助我? 我使用的XCode 4.2和iOS 5 SDK

+0

我得到了解决方案。 请访问以下链接: http://stackoverflow.com/questions/7864371/ios5-how-to-pass-prepareforsegue-an-object –

回答

0

你不能叫[pvc setImage:signatureView.image];因为当prepareForSegue:被称为不存在signatureView。

您可以传递图像的名称并将其设置为viewWillAppear

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

图像不是一个文件,我宁愿不节能它。在'prepareForSegue'内:我也对正常点击作出反应,并与捕获图像的控制器一起工作。通过这种方式进行图像传输。 'if([[segue identifier] isEqualToString:@“toSignature”]){ SignatureViewController * svc =(SignatureViewController *)[segue destinationViewController]; svc.sourceImageView = signatureView; }' – ben

+0

你是否试过在上面的代码中做同样的事情? – dasdom

+0

是的,那是我尝试过的可能性之一。这就是我困惑的原因。它适用于这种情况,但不适用于其他... – ben

0

我认为在iOS开发视图控制器之间传递数据称为协议或@protocol。我讨厌成为'引用'的人之一,但那就是我会做的。欢呼声

相关问题