SDWebImage на iPad - PullRequest
       8

SDWebImage на iPad

0 голосов
/ 11 октября 2011

Я создаю галерею изображений, где при нажатии на изображения происходит переход к следующему виду.Я использую библиотеку SDWebImage для кэширования изображений.Кеширование работает отлично, и я получаю галерею изображений.Проблема в том, что если я очищаю кеш и запускаю свое приложение.

Изображение загружается в методе делегата, но я не могу назначить загруженное изображение в моей кнопке (dats в viewdidload), и кэширование не происходитпервый раз и изображения отображаются только в том случае, если я запускаю приложение для iPad во второй раз (из-за кэширования).Я хочу, чтобы изображения были загружены и отображены после очистки кэша.Как я могу это сделать?

Я даже готов предоставить весь исходный код.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.synced = [NSMutableArray array];
    self.title=@"boom";
    jsonurl=[NSURL URLWithString:@"http://www.1040communications.net/sheeba/stepheni/iphone/stephenFlickr.json"];
    jsonData=[[NSString alloc]initWithContentsOfURL:jsonurl];
    dict=[jsonData objectFromJSONString];
    items=[dict objectForKey:@"items"];
    story = [[NSMutableArray array]retain];
    media1= [[NSMutableArray array]retain];
    for (NSDictionary *item in items )
    {
        [story addObject:[item objectForKey:@"title"]];
        [media1 addObject:[item objectForKey:@"media"]];
    }
    view1 = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    for(int i = 0; i < media1.count; i++)
    {
        NSString *mel=[media1 objectAtIndex:i];
        NSString *escapedURL = [mel stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        NSURL *url1=[NSURL URLWithString:escapedURL];
        managaer=[SDWebImageManager sharedManager];

        cacheImage = [managaer imageWithURL:url1];

        //To clear the cache, uncomment these three lines
        /* SDImageCache *imageCache = [SDImageCache sharedImageCache];
                     [imageCache clearDisk];
                     [imageCache clearDisk];*/
        if (cacheImage) {
            //If a cache image is present
        }
        else
        {   //If there is no cache image present, download.
            [managaer downloadWithURL:url1 delegate:self];
        }
        button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame =  CGRectMake(column*260+1, row*280+300, 250, 250);
        [button setImage:cacheImage forState:UIControlStateNormal];
        NSLog(@"cached image:%@",cacheImage);

        [button addTarget:self action:@selector(buttonClicked:)
                forControlEvents:UIControlEventTouchUpInside];
        button.tag = i;

        [view1 addSubview:button];

        if (column == 2) {
            column = 0;
            row++;
        } else {
            column++;
        }
    }

    [view1 setContentSize:CGSizeMake(600, (row+1) *280 + 10)];
    [self.view addSubview:view1];
    [view1 release];
}

-(void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:  (UIImage   * )image
{
    //The image gets downloaded over here..
}

Enter image description here

1 Ответ

1 голос
/ 13 октября 2011

Вам нужно перезагрузить ваш взгляд в -webImageManager:didFinishWithImage:.Если вы удалите свои подпредставления и перезагрузите все в методе с помощью цикла for(int i = 0; i < media1.count; i++), тогда ваш пользовательский интерфейс должен обновиться без перезапуска приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...