0

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

我的问题是我有一个名为“UpdateViewController.xib”的 UIView,它以编程方式加载 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,你看到你的朋友图像列表然后你想检查你的第一个朋友的照片,然后你回到你朋友的整体图像而不加载并选择第二个朋友。

4

1 回答 1

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];
    [图片发布];

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

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

    if([[NSFileManager defaultManager] fileExistsAtPath: uniquePath])
    {
        返回 [[NSData alloc] initWithContentsOfFile:uniquePath];
    }
    返回零;
 }

于 2012-07-17T05:32:58.873 回答