我正在尝试将图像从一个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");
}
}
答案 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
}