我是 iOS 开发新手,在我的应用程序中,我需要在 heightForRowAtIndexPath
方法中计算动态表格单元格的高度。
问题是我不想在“回调” block 完成之前返回值。在 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;
}];
}
最佳答案
您要么必须同步运行 block (即,阻塞主线程直到 block 完成)然后返回它,要么您需要将计算出的高度存储在存储中并重新加载单元格。第二个选项是首选,因为您不会阻塞主线程和 UI。您可以在占位符单元格上显示加载指示器,一旦获得所有必需的信息,重新加载单元格并正确显示它。您可以指定一个动画,让用户可以平滑地进行重新加载过渡。
关于iOS - 执行 block 后从 heightForRowAtIndexPath 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23443711/