-1

我有一个 4 图像视图,如果单击第一个图像视图图像传输到下一个可绘制视图,用户可以使用绘图板编辑图像。用户可以在该图像上画线或矩形我想将该图像保存到 NSUserDefault 并且当用户返回第一个屏幕时将原始图像替换为先前选择的图像

将图像保存到 NSUserDefault 我使用了此代码。

-(IBAction)SaveBtn:(UIBUttonSender*)sender
{
    [delegate.imagesDef setObject:UIImagePNGRepresentation(previewImageView.image) forKey:@"first"];

    NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
                 delegate.image = [UIImage imageWithData:imageData];

    NSLog(@"%@",[delegate.image description]);
    NSLog(@"%@",imageData);
    [delegate.imagesDef synchronize];
}

此代码可以很好地保存图像。我记录了它,但是当我去以前的控制器图像时没有被替换

我使用此代码设置新的编辑图像。

if([delegate.imagesDef objectForKey:@"first"])
    {

        NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
        delegate.image = [UIImage imageWithData:imageData];

        NSLog(@"%@",[delegate.image description]);
        NSLog(@"%@",imageData);

        NSLog(@"%@",delegate.image);

        FirstImageView.image=delegate.image;    
    }

图像没有改变我该如何解决这个问题。

请帮我解决这个问题。

提前致谢。

4

2 回答 2

5

您不应该将 an 存储UIImageNSUserDefaults. NSUserDefaults适用于小块数据,而不是整个图像。只需将图像写入磁盘(写入文档目录)并将路径保存到 NSUserDefaults。

加载:

NSString *pathToFile;
UIImage *image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:pathToFile atomically:YES];
[[NSUserDefaults standardUserDefaults] setObject:pathToFile forKey:@"image"];

恢复:

NSString *pathToFile = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
NSData *imageData = [NSData dataWithContentsOfFile:pathToFile];
UIImage *image = [UIImage imageWithData:imageData];

但是为什么你不只是使用属性在你的 ViewController 之间传递 UIImage 对象本身呢?

于 2013-09-17T05:42:06.963 回答
0

首先NSUserDefault不推荐使用这个东西。

几个选择:

1)您可以将此图像分配给firstViewControllers属性,以便以后可以在声明其对象时访问它secondViewController

2)您可以发送一个NSNotification到 firstViewController 的想法,您可以将图像发送firstViewControllersecondViewController

希望这会帮助你。

于 2013-09-17T05:41:32.413 回答