加載

0

我的應用程序的層次結構如下之前重置異步的UIImageView從互聯網加載

http://www.markj.net/iphone-asynchronous-table-image

我沒有在任何的UITableViewController問題的形象,這個問題是在點擊單元格時,它加載在UIViewController中的形象,如果我回去UITableViewController然後點擊另一個單元格,UIViewController與以前的圖像打開,直到加載新的圖像

如何重置UIViewController中的UIImageView直到新的圖像加載?

這是加載細節查看代碼:

CGRect frame; 
frame.size.width=240; frame.size.height=130; 
frame.origin.x=0; frame.origin.y=0; 
AsyncImageView* asyncImage = [[[AsyncImageView alloc] initWithFrame:frame] autorelease]; 
asyncImage.tag = 999; 
NSURL *url = [NSURL URLWithString:@"http://i53.tinypic.com/5ezwc4.jpg"]; 
[asyncImage loadImageFromURL:url]; 
[detailsViewController.imgProduct addSubview:asyncImage]; 

請幫助。

+0

發佈detailviewcontroller創建的代碼。您可能想要從中刪除asyncImage,或者在點擊tableview時重新創建控制器。 –

+0

詳細視圖控制器是在IB中創建的,在詳細信息視圖中asyncImage背後的原因是因爲它打開詳細視圖的速度太慢,因爲它從互聯網上讀取圖像 – DeZigny

回答

1

這是BZ在緩存烏爾分組數據AsyncImageview方法的loadimagefromurl方法,u需要重置高速緩存 - 使用asynimageview設置其

imageCache = nil; in the method 

但它會影響其他viewcontrollers,

我希望你在烏爾DetailsView的控制器有一個圖像,這樣

更好

我應該建議使用GCD這個

NSString *finalStr = [NSString stringWithFormat:@"/no-image-available.png"];  

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 

dispatch_async(queue, ^{ 


    NSURL* url = [NSURL URLWithString:finalStr]; 

    NSData *imgData = [NSData dataWithContentsOfURL:url]; 

    dispatch_sync(dispatch_get_main_queue(), ^{ 



    UIImage *img01 = [UIImage imageWithData:imgData]; 


    imgView.image = img01; 
    }); 

});

http://blog.slaunchaman.com/2011/02/28/cocoa-touch-tutorial-using-grand-central-dispatch-for-asynchronous-table-view-cells/

這會給你同樣的性能

+0

感謝Karthikeyan,從我的理解是GCD將幫助在表格視圖單元格,我沒有任何問題,我的問題是隻有當加載新的圖像加載時,其圖像未重置的詳細信息視圖! – DeZigny

+0

我試圖放置imageCache =零,但它拋出一個錯誤!這是loadImageFromURL: - (void)loadImageFromURL:(NSURL *)url {[connection release]; [數據公佈]; NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; } – DeZigny

0

值得提高AsyncImageView類。添加您自己的init方法,像這樣:

 
- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.image = [UIImage imageNamed:@"loading.png"]; 
    } 
    return self; 
} 

文件loading.png必須在你的包和含有正確的東西而遠程圖像加載顯示。

+0

感謝Slava,我將這個方法放在AsynchImageView中。但我得到了以下錯誤:語義問題:需要使用屬性分配語法分配給對象的Setter方法 – DeZigny

+0

從[這裏]嘗試遠程圖像(https://github.com/iutinvg/ZZLib/tree/master/ZZLib )查看文件'ZZImageView。*'和'loading.png'並且不要忘記包含導入的文件(參見'ZZImageView.m'的頭文件)。 – iutinvg