如果单元格的图像是坏图像,我正在尝试从 UITableView 中删除一个单元格。基本上,我的代码对每个单元格的图像执行 threadPool 调用,以使绑定数据的流程在用户滚动时平滑,就像在 GetCell 方法中一样:
public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
{
//other stuff
ThreadPool.QueueUserWorkItem(new WaitCallback(RetrieveImage),(object)cell);
}
在该异步方法中,我调用 cell.imageUrl 属性并将其绑定到 NSData 对象,如下所示:
NSData data = NSData.FromUrl(nsUrl); //nsUrl is cell.imageUrl
从那里我知道如果data==null则检索图像时出现问题,因此我想将其删除。我目前所做的是将 hidden 属性设置为 true,但这会留下一个空白区域。我想删除整个单元格,这样用户甚至都不知道它的存在。我无法将单元格高度设置为 0,因为我不知道 imageUrl 是否坏,直到 indexrowpath 启动 getcell 调用。我不想只检查绑定到 UITableView 的数据中的所有图像,因为这会对性能造成很大的影响,因为它很容易包含一百个项目。我目前正在从一个提供前 200 个项目的网络服务中获取项目。如果 data==null 示例,我如何完全删除单元格
NSUrl nsUrl = new NSUrl(cell.imageUrl);
NSData data = NSData.FromUrl(nsUrl);
if (data != null) {
InvokeOnMainThread (() => {
cell.imgImage = new UIImage (data);
//cell.imgImage.SizeToFit();
});
} else {
//I tried the below line but it does't work, I have a cell.index property that I set in the getCell method
_data.RemoveAt(cell.Index);//_data is the list of items that are binded to the uitableview
InvokeOnMainThread (() => {
//cell.Hidden = true;
});
}