iOS - 块执行后从heightForRowAtIndexPath返回值

时间:2014-05-03 11:17:09

标签: ios objective-c callback block heightforrowatindexpath

我是iOS开发的新手,在我的应用程序中,我需要在heightForRowAtIndexPath方法中计算动态表格单元格的高度。

问题是我不想在"回调"之前回复价值。块已完成..在objective-c中有没有办法做到这一点?

这是我的方法实施:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    ...
    SDImageCache *imageCache = [[SDImageCache alloc] init];
    [imageCache queryDiskCacheForKey:model.thumbnail done:^(UIImage *image, SDImageCacheType cacheType)
     {

         // do calculations with height etc.
         // got an error "incompatible block pointer types sending"
         return value;
     }];
}

1 个答案:

答案 0 :(得分:1)

您必须同步运行块(即阻塞主线程直到块完成)然后返回它,或者您需要将计算出的高度存储在存储器中并重新加载单元。第二个选项是首选,因为您没有阻止主线程和UI。您可以在占位符单元格上显示加载指示符,一旦获得所有必需信息,请重新加载单元格并正确显示它。您可以指定一个动画,以便为用户平滑地重新加载过渡。