2011-10-11 65 views
0

我正在創建一個圖像庫,點擊圖像可導航到下一個視圖。我正在使用SDWebImage庫來緩存圖像。緩存工作得很好,我正在獲取圖像庫。問題是,如果我清除緩存並運行我的應用程序。iPad上的SDWebImage

圖像被下載到委託方法中,但我無法在我的按鈕(viewdidload中的dat)中分配下載的圖像,第一次也沒有發生緩存,並且圖像只有在第二次運行我的iPad應用程序時纔會顯示(由於緩存)。我想要在清除緩存時下載並顯示圖像。我怎樣才能做到這一點?

我甚至準備給整個源代碼。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.synced = [NSMutableArray array]; 
    [email protected]"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

您需要重新加載您的視圖中-webImageManager:didFinishWithImage:。如果您刪除了子視圖並使用for(int i = 0; i < media1.count; i++)循環重新加載了方法中的所有內容,那麼無需重新啓動應用即可更新您的用戶界面。

+0

mkay會試一試 – kingston

+0

我嘗試在webImageManager中粘貼整個for循環:didFinishWithImage離開委託調用,它是「[managaer downloadWithURL:url1 delegate:self];」在viewdidload..the-webImageManager:didFinishWithImage沒有得到調用...我會粘貼我的整個代碼上面..你幫我 – kingston