0

我是 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;
     }];
}
4

1 回答 1

2

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

于 2014-05-03T11:30:29.950 回答