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