2012-09-11 45 views
0

我正在尋找在自定義tableviewcell中設置圖像,並使用heightForRowAtIndexPath方法中返回的圖像的高度。AFNetworking setImageWithURL - 獲取返回圖像的高度?

無論如何要將這個返回的數據放入heightForRowAtIndexPath方法嗎? 目前我使用的是本地詞典並將其設置爲每如下:

NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:recent.show.showImage] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30]; 


    [cell.imageView setImageWithURLRequest:urlRequest placeholderImage:[UIImage imageNamed:@"icon"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 

     NSNumber *imageHeight = [[NSNumber alloc] initWithFloat:image.size.height]; 
     NSString *indexString = [NSString stringWithFormat:@"%d", indexPath.row]; 
     [self.returnedImages setValue:imageHeight forKey:indexString]; 
     [imageHeight release]; 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

    }]; 

任何指針上更有效的方法不勝感激。

乾杯 聶

+0

目前的方案是不是高性能?一個有趣的問題(我不知道答案)是在'tableView:heightForRowAtIndexPath:'之前還是之後調用'tableView:cellForRowAtIndexPath:'。換句話說,當您要求的身高時,您的字典條目是否可用? – FluffulousChimp

+0

我不確定你可以保證這些方法被調用的順序 - 它們可能是異步的。 – TimD

+0

謝謝。目前我在索引方法索引和高度調用兩個單元格中的設置圖像。似乎沒問題。無論哪個人先被調用並不重要,因爲在隨後的調用中使用了緩存。 –

回答

1

您目前正在做這在NSDictionary中的方式是適當的。儘管爲了確保它儘快更新,您可以將[self.tableView reloadData]添加到您的成功塊,因爲它會立即使用更新的數據刷新您的tableview。更好的是,你可以使用reloadRowsAtIndexPaths:withRowAnimation:並將它傳遞給新下載的UIImage的索引路徑,這樣它就不會刷新整個tableview。

Docs

相關問題