我有一个奇怪的问题,我无法弄清楚,我希望有人能指出我正确的方向:
我有一个核心数据tableview应用程序,可以深入到可以下载图像的详细视图。下载图像后,当我将一个级别备份到表格视图中时,会创建一个缩略图并显示。
在详细视图中,用户可以选择下载表格视图的所有图像(使用passFetchResultsController循环浏览每个项目,下载图像,并将其分配给item.photo值)。缩略图创建在这里也可以正常工作。换句话说,如果用户下载所有图像,然后将一个级别备份到表格视图,则会为表格中的每个项目创建(并显示)缩略图。
但是,我想将MBProgressHUD添加到详细视图中,以便在用户下载多个图像(可能是10,可能是100,可能是1000,取决于表)时,用户会看到进度指示器让他们知道正在下载的图片。
如果我使用MBProgressHUD,当下载完成时,详细视图会使用正确的图像进行更新,但是当我将一个级别备份到表格视图时,缩略图不会出现(事实上,"选中"单元格仍然突出显示,表明表格根本没有刷新。正在创建缩略图(我可以在我的日志中看到),如果我再备份一个级别,然后向下钻取,则所有缩略图都在那里。因此,如果我使用MBProgressHUD,它似乎只是不刷新。我有慷慨的日志语句,所有的外观都是相同的(保存上下文," viewdidappear"运行,缩略图方法运行,cellforrowatindexpath运行)但是缩略图不会出现在以前在屏幕上。如果我向下滚动,创建的新单元格会有新的缩略图,但即使我向上滚动,原始单元格也没有缩略图。如果我深入查看每个细节视图,图像将显示在imageview中,但返回到表视图仍然不会刷新视图...如果我再备份一个级别然后向下钻取,则它们是又来了。
我很乐意发布代码,但我不确定哪个部分会有所帮助 - 如果您有一些想法并想看一些方法,请告诉我,我会发布的ASAP。
为了澄清,这是我对MBProgressHUD的实现:
- (IBAction)httpMultipleImageDownload:(id)sender {
HUD = [[MBProgressHUD alloc] initWithWindow:[UIApplication sharedApplication].keyWindow];
// Add HUD to screen
[self.view.window addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Downloading Images";
HUD.detailsLabelText = @"This could take several minutes!";
HUD.square = YES;
HUD.minSize = CGSizeMake(320.f, 320.f);
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
[HUD showWhileExecuting:@selector(downloadTask) onTarget:self withObject:nil animated:YES];
}
downloadTask正在触发图像下载。如果我的按钮直接调用downloadTask,下载图像,则会刷新详细视图,当我退回到tableView时,会显示所有缩略图。
如果我按下按钮调用上述方法,则会在执行downloadTask时创建并显示HUD。和以前一样,所有图像下载,细节视图都会刷新,但是当我退回到tableView时,缩略图不会显示。但是,它们是创建的,如果我备份另一个级别,然后退回,它们是可见的。那更有意义吗?
谢谢! 扎克