Iphone 如何检索保存在临时位置的图像

Iphone 如何检索保存在临时位置的图像,iphone,ios,objective-c,xcode,Iphone,Ios,Objective C,Xcode,我有一个iOS应用程序,其中有一个视图控制器,用户可以访问其相机或库来加载图片。我正在尝试创建此文件的临时副本,以便加载到另一个视图控制器内的另一个UIImageView中。我能够保存该文件(至少在NSLog中看起来是这样,但在访问它以填充第二个viewcontroller时遇到了问题) 用户加载图像的第一视图控制器: -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWith

我有一个iOS应用程序,其中有一个视图控制器,用户可以访问其相机或库来加载图片。我正在尝试创建此文件的临时副本,以便加载到另一个视图控制器内的另一个UIImageView中。我能够保存该文件(至少在NSLog中看起来是这样,但在访问它以填充第二个viewcontroller时遇到了问题)

用户加载图像的第一视图控制器:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
[self dismissViewControllerAnimated:YES completion:NULL];

//Save the temp file
tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
fileURL = [[tmpDirURL URLByAppendingPathComponent:@"userPic"] URLByAppendingPathExtension:@"jpg"];
NSLog(@"fileURL: %@", [fileURL path]);
}
我的问题是,如何在第二个视图控制器的viewdidload中调用保存的文件

我一直在玩弄这样的东西,但我也犯了一些错误(我只是希望如此!)

userImageView
是我设置到图像视图的一个出口

在第一个控制器的.h文件中声明

@property (nonatomic, strong) IBOutlet NSURL *fileURL;
@property (nonatomic, strong) IBOutlet NSURL *tmpDirURL;

不能仅将NSURL指定为图像属性

它将是:

userImageView.image = [UIImage imageWithContentsOfFile:[_fileURL absoluteString]];
另外,看起来您并没有实际保存文件(除非您在其他地方这样做)。为什么不保留一个指向所拾取图像的指针,并将指针传递给另一个视图控制器

您已经有一个指向行上方UIImage的指针

image=[info objectForKey:UIImagePickerControllerOriginalImage];

如果在第二个视图控制器中创建UIImage属性(strong),并将其设置为相同的值,则仍然可以使用它。例如,如果第二个视图控制器是mySecondViewController,并且它有一个名为
TheImageined
的属性,则可以执行以下操作:

image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
mySecondViewController.theImageINeed = image;
但是,似乎您正在显示一个视图控制器,而不是您需要该图像的视图控制器。在这种情况下,我将忽略刚才所说的内容,并为此创建一个委托方法

这意味着在显示视图的标题中,您将有如下内容:

//In the header file of the presented view
@protocol FoundMahImageDelegate <NSObject>
- (void)userSelectedAnImage:(UIImage *)image;
@end

@interface yourViewName : NSObject

//whatever else you already have

@property (nonatomic, strong) id <FoundMahImageDelegate> delegate;
@end

希望这有帮助。

很容易尝试以下步骤

1.将所选图像转换为nsdata

2.创建文档目录路径

3.将图像名称追加到文档路径中

3.使用[数据写入文件:imagePath原子:是]; 写入上次创建的路径


4.然后,无论您想在何处或在何处访问文档文件夹中的图像

不确定,但您可以尝试此方法

userImageView.image =[UIImage imageWithData:[NSData dataWithContentsOfURL:_fileURL]];

您从未保存该文件。您创建了URL路径,但没有写入该文件…我已经尝试过了,但是我得到了不兼容的指针类型“NSURL to NSString”,然后
userImageView.image=[UIImage imageWithContentsOfFile:[\u fileURL absoluteString]]
我更新了上面的答案以匹配。absoluteString实例方法将绝对路径作为NSString返回。你说的对,我认为我并没有实际保存图像。使用指针是什么意思?你能给我指出正确的方向吗(没有双关语)?感谢您的详细回复。我会查看它。因此您的回复帮助很大,我对此表示感谢。我正在truley尝试学习,因此您的列表帮助我这样做。我现在正在将图像保存到文档目录中(我通过进入文件验证了这一点。我还能够将其作为图像打开!进度…是的!)我现在的问题是,我找不到任何关于如何从我的文档目录访问它的明确信息。这是它的保存方式:data=uiImagePNGRepression(userImageView.image);dirpath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);docsDir=[dirpath objectAtIndex:0];databasePath=[[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@“userPic.png”];[data writeToFile:databasePath原子路径:是];NSString*path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];userImageView.image=[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@“%@/userPic.png”,path]];其他人查看^i这是我访问该文件的方式。
//In the implementation file of the presented view
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
[self.delegate userSelectedAnImage:image];  //<-- the part that changed
[self dismissViewControllerAnimated:YES completion:NULL];
@interface myMainViewController : NSObject <FoundMahImageDelegate>
//...
- (void)userSelectedAnImage:(UIImage *)image
{
    //here you go, you've got the image, do something with it
}
userImageView.image =[UIImage imageWithData:[NSData dataWithContentsOfURL:_fileURL]];