在我的第一个视图控制器中,我有一个UIImage属性,它在实现文件中合成。在推送的第二个视图控制器中,我在那里创建一个UIImage对象,同时从第一个视图控制器将其设置为UIImage属性。最后,我解雇了第二个视图控制器。但是,在视图控制器被解除后,似乎没有保存图像。我的理解是,由于UIImage是一个指针,数据传递是通过引用,因为控制器被解雇,UIImage也是如此。这是正确的,是否有更好的方法来完成这项任务?供您参考,我使用ARC。
在第一个视图控制器(firstVC)中,
@property (strong, nonatomic) UIImage *image;
在第二个视图控制器中,
[firstVC setImage:self.ivarUIImageView.image];
其中ivarUIImageVIew定义为:
@property (strong, nonatomic) IBOutlet UIImageView *ivarUIImageView;
现在让我们说在第三个视图控制器中,我在viewDidLoad方法中:
imgView = [[UIImageView alloc] initWithImage:firstVC.image];
其中imgView定义为:
@property (strong, nonatomic) IBOutlet UIImageView *imgView;
答案 0 :(得分:1)
您希望确保第一个视图控制器保留UIImage
,方法是设置属性strong
。此外,如果要在UIImageView
中显示它,则必须将UIImageView的image
设置为新图像,以便查看UI中反映的更改。