我的应用程序允许用户从相机胶卷中选择照片或拍摄照片,应用程序在本地保存照片,然后转到下一个视图控制器并加载刚刚保存并显示在图像视图上的图像。
这是我用来获取用户想要的图像并将其发送到我的发送图片方法的代码。
UIImage *image = info[UIImagePickerControllerEditedImage];
[self saveImage:image];
[picker dismissViewControllerAnimated:NO completion:NULL];
[self performSegueWithIdentifier:@"switch" sender:nil];
这是:
-(void)saveImage: (UIImage*)image{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"test.png"];
NSData* data = UIImagePNGRepresentation(image);
[data writeToFile:path atomically:YES];
printf("image saved");
}
该代码已运行,因为它打印的图像已保存。该应用程序转到下一个视图,这就是我设置viewDidLoad的方式:
- (void)viewDidLoad
{
[super viewDidLoad];
//[imageViewPreview setImage:self.secondImage];
//imageViewPreview.image = self.secondImage;
}
我评论了我尝试过的两种方式,但这两种方法都没有。这就是我试图让我的第二个图像加载的方式:
-(UIImage* )secondImage{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"test.png"];
UIImage* image = [UIImage imageWithContentsOfFile:path];
printf("image loaded");
return image;
}
这里有什么问题?
答案 0 :(得分:1)
你应该做得更简单。在第二个视图控制器中添加公共UIImage属性。然后将第二个控制器导入第一个控制器。然后在prepareForSegue中设置如下图像:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"switch"]) {
ClassOfDEstinationController *destinationController = segue.destinationViewController;
destinationController.image = image;
}
}