通过preparesegue将图像从一个视图传递到另一个视图?

时间:2014-01-22 10:38:32

标签: ios objective-c uiviewcontroller uiimage uistoryboardsegue

我正在尝试将图像从一个viewcontroller传递到另一个。我已经在stackoverflow上尝试了所有可用的解决方案,但我仍然在努力。我如何通过preparesegue传递uiimage?

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ( [segue.identifier isEqualToString:@"filter"]) {
    FilterViewController *cvc = [segue destinationViewController];
    UIImage *image = imageView.image;
    cvc.desktopview.image = image;
    NSLog(@"segue");
}

}

4 个答案:

答案 0 :(得分:1)

你不能这样做,因为还没准备好。

cvc.desktopview.image = image;

相反,您需要将其存储在UIImage属性中,并在目标视图控制器的viewDidLoad方法中使用它。

prepareForSegue

中有类似内容
cvc.image = image;

并在视图控制器中

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.desktopview.image = image;


}

编辑:

您需要在视图控制器的头文件中使用它。

@property (nonatomic, strong) UIImage * image;

答案 1 :(得分:1)

转到FilterViewController.h

在那里添加一个uiimage @property(nonatomic,strong)UIImage *dvImage;

转到FilterViewController.m

合成它@synthesize dvImage;

转到您呼叫FilterViewController

的代码
FilterViewController *cvc = [segue destinationViewController];
UIImage *image = imageView.image;
cvc.setDvImage = image;
NSLog(@"segue");

然后在viewDidLoad设置self.desktopview.image = dvImage;

不要忘记查看 segue标识符

希望这有帮助

答案 2 :(得分:1)

只有在加载所有出口后才会调用

ViewDidLoad,所以永远不要尝试在准备segue方法中设置出口/视图值,因为在准备segue方法之后将调用viewDidLoad。现在,您可以在filterViewController中创建一个创建UIImage属性并设置其值。并在viewDidLoad方法中将其设置为specfic imageView

答案 3 :(得分:0)

优化方式

 [segue.destinationViewController setAnotherImage:yourImage];

另一个视图控制器

-(void)setAnotherImage:(UIImage *)happiness
{
    //get your image here
}
相关问题