想要在更改为其他UIView时保留缓存数据

时间:2012-07-17 04:14:17

标签: iphone xcode uiview

我希望得到一些帮助或任何我可以用来搜索的关键字。

我的问题是我有一个UIView,名为" UpdateViewController.xib"通过编程方式在这些图像下方加载20个小图像和文本。 当用户点击这些图像时,它将变为我由IB创建的下一个视图,名为" imageSumVuew.xib"我有一个链接回UpdateViewController的按钮。

#import "imageSumView.h"  // next view that i wanna load//
// the transition to next view
imageSumView *nextView = [[imageSumView alloc]init];
self.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:nextView animated:YES completion:NULL];
[nextView release];

在nextView中我有类似于此的代码返回到此视图

#import "UpdateViewController.h"  // old that i wanna load back//
    // the transition to old view
    UpdateViewController *oldView = [[UpdateViewController alloc]init];
    self.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:oldView animated:YES completion:NULL];
    [oldView release];

问题是当它确实加载回UpdateViewController时,我的所有图像和文本都必须重新加载。

问题是" 如何保留UpdateViewController视图的缓存?",我不希望用户重新加载图像,因为他们必须在此页面之间来回多次看看他们想要选择哪个图像。

想想Instragram,你看到你的朋友图片列表,然后你想检查你的第一个朋友的照片,然后你回到朋友的整体形象,而不加载,并选择第二个朋友。

1 个答案:

答案 0 :(得分:0)

首次下载临时目录时,将具有唯一ID的图像数据存储到临时目录中。下次检查目录中的用户ID映像,如果有,则从那里加载映像。例如:

 #define TMP NSTemporaryDirectory() 
    NSString *filename=[NSMutableString stringWithFormat:@"userimage_%@",userId];

    NSString *uniquePath = [TMP stringByAppendingPathComponent:filename];
    NSData *dataImage = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]
    UIImage *image = [[UIImage alloc] initWithData: dataImage];
    [UIImageJPEGRepresentation(image, 1.0f) writeToFile: uniquePath atomically: YES];
    [image release];

要获取您的图像,您可以执行以下操作:

- (NSData *) getImage: (NSString *)userId 
{
    NSString *filename=[NSMutableString stringWithFormat:@"userimage_%@,userId];
    NSString *uniquePath = [TMP stringByAppendingPathComponent: filename];

    if([[NSFileManager defaultManager] fileExistsAtPath: uniquePath])
    {
        return [[NSData alloc] initWithContentsOfFile:uniquePath];
    }
    return nil;
 }