通过preparesegue将图像从一个视图传递到另一个视图?
Posted
技术标签:
【中文标题】通过preparesegue将图像从一个视图传递到另一个视图?【英文标题】:Pass image from one view to another view by preparesegue? 【发布时间】:2014-01-22 10:38:31 【问题描述】:我正在尝试将图像从一个视图控制器传递到另一个。我已经在 *** 上尝试了所有可用的解决方案,但我仍然在苦苦挣扎。我如何通过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");
【问题讨论】:
这是正确的做法。你的 NSLog 被调用了吗?你怎么知道图片没有通过? 检查@"filter" 是否真的是segue 的名称;) 您在 filterViewController 中访问图像的位置 尝试在 viewDidAppear 或 viewWillAppear 中访问。 【参考方案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 标识符
希望对你有帮助
【讨论】:
使用合成或_dvImage 非常感谢老兄。你摇滚\m/:D【参考方案2】:您不能这样做,因为它还没有准备好。
cvc.desktopview.image = image;
相反,您需要将其存储在 UIImage
属性中,并在目标视图控制器的 viewDidLoad
方法中使用它。
prepareForSegue
中的类似内容
cvc.image = image;
在视图控制器中
- (void)viewDidLoad
[super viewDidLoad];
self.desktopview.image = image;
编辑:
您需要在视图控制器的头文件中使用它。
@property (nonatomic, strong) UIImage * image;
【讨论】:
看不懂你的回答,cvc是viewcontroller,怎么设置.image。老兄,我是ios开发新手。请帮帮我。【参考方案3】:ViewDidLoad
仅在所有 outlet 加载后才会调用,因此切勿尝试在 prepare segue 方法中设置 outlet/views 值,因为 viewDidLoad
将在 prepare segue 方法之后调用。现在您可以在filterViewController
中创建一个 UIImage 属性并设置其值。并在viewDidLoad
方法中将其设置为特定的imageView
。
【讨论】:
【参考方案4】:优化方式
[segue.destinationViewController setAnotherImage:yourImage];
另一个视图控制器
-(void)setAnotherImage:(UIImage *)happiness
//get your image here
【讨论】:
以上是关于通过preparesegue将图像从一个视图传递到另一个视图?的主要内容,如果未能解决你的问题,请参考以下文章