Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在ViewController之间传递UIImage_Ios_Objective C_Ios6_Uiimage - Fatal编程技术网

Ios 在ViewController之间传递UIImage

Ios 在ViewController之间传递UIImage,ios,objective-c,ios6,uiimage,Ios,Objective C,Ios6,Uiimage,在我的第一个视图控制器中,我有一个UIImage属性,它在实现文件中合成。在推送的第二个视图控制器中,我在那里创建了一个UIImage对象,同时从第一个视图控制器将其设置为UIImage属性。最后,我关闭了第二个视图控制器。但是,在关闭viewcontroller后,似乎未保存图像。我的理解是,由于UIImage是指针,数据通过引用传递,并且由于控制器被解除,UIImage也是如此。这是否正确?是否有更好的方法来完成这项任务?供您参考,我使用的是ARC 在第一视图控制器(firstVC)中 在第

在我的第一个视图控制器中,我有一个UIImage属性,它在实现文件中合成。在推送的第二个视图控制器中,我在那里创建了一个UIImage对象,同时从第一个视图控制器将其设置为UIImage属性。最后,我关闭了第二个视图控制器。但是,在关闭viewcontroller后,似乎未保存图像。我的理解是,由于UIImage是指针,数据通过引用传递,并且由于控制器被解除,UIImage也是如此。这是否正确?是否有更好的方法来完成这项任务?供您参考,我使用的是ARC

在第一视图控制器(firstVC)中

在第二视图控制器中

[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;

要确保第一视图控制器保留
UIImage
,请使属性
strong
。此外,如果要在
UIImageView
中显示它,则必须将UIImageView的
图像设置为新图像,以便查看反映在UI中的更改。

第一个视图控制器中的UIImage具有强属性和非原子属性集。在第二个视图控制器中创建了一个图像,我使用了适当的setter方法来设置UIImage。尝试在UIImageView中显示图像时,我首先使用UIImage属性alloc和initWithImage。但是,没有显示任何内容。我哪里出错了?你能显示代码吗?您需要确保UIImageView已添加到视图中,并且在第二个视图重新设置第一个图像后执行setImage:操作。这可以通过重写视图控制器的setImage:accessor方法来实现。Objective-C是否通过UIImage的引用传递?在第三个VC中,如何定义firstVC?如果您登录firstVC(在第三个VC的viewDidLoad中),它是零吗?如果您只想处理同一个映像,为什么不将它放在一个单例类(例如AppDelegate)中呢?您在这里做什么还不清楚。在第二个视图控制器中,在firstVC上调用setImage——什么是firstVC?指向第一视图控制器的指针?图像视图?在第三视图控制器中,您说您有一个IBOutlet imgView,但随后您将其分配给init——如果它是IB中图像视图的出口,您不想这样做。@rdelmar对此表示抱歉。firstVC实际上是指向第一个视图控制器的指针。结果表明,该图像没有显示,因为我在它作为一个出口时分配并初始化了它。所以,如果我已经通过IB实现了,就不需要alloc和init了,对吗?另外,Obj-C是否通过引用/指针传递UIImage?是的,您不希望将在IB中有出口的对象分配给init——这将创建一个不同的实例,这不是您想要的。是的,对象是通过引用传递的。
@property (strong, nonatomic) IBOutlet UIImageView *imgView;