0

我正在使用 MDProgressHUD 来管理使用 NSConnection 的下载进度。一切都很好。当我尝试在调用 connectionDidFinishLoading 时将 HUD labelText 从说正在下载更改为完成时遇到问题。

在我的 connectionDidFinishLoading 方法中,我正在更改 labelText 并将图标更改为 checkmark ,就像在示例应用程序中一样。

    HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]];
HUD.mode = MBProgressHUDModeCustomView;
HUD.labelText = @"Finishing Up";
NSLog(@"show change now!!!");

在该代码之后,我解压缩下载并进行一些数据库操作。

但是由于某种原因,直到到达函数结束时它才会改变 [HUD hide:YES afterDelay:4]; 叫做。

我希望在它开始解压缩我的内容之前对其进行更改,因为下载已满,并且它使应用程序看起来像挂起或冻结。

如果重要,我正在使用 zipArchive 进行提取。

任何意见,将不胜感激。

4

5 回答 5

2

这对我有用

dispatch_async(dispatch_get_main_queue(), ^{
  progressView.titleLabelText = @"Downloading ...";
});
于 2014-06-14T18:09:14.680 回答
0

您是否尝试过:

[HUD setNeedsLayout];
[HUD setNeedsDisplay];
于 2012-04-27T15:23:34.100 回答
0

MBProgressHUD 使用 KVO 来检测标签、进度等属性的更改。一旦您更改它,observeValueForKeyPath() 应该运行并更新 UI。您的代码是否真的很密集并且阻塞了 UI?我以前见过这种情况。。

于 2012-08-27T21:51:14.987 回答
0

您只需将此方法添加到 MBProgressHud 的头文件中:

+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view withText:(NSString *)text;

并在.m文件中实现如下:

+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view withText:(NSString *)text
{
    MBProgressHUD *hud = [[self alloc] initWithView:view];
    hud.labelText = text;
    [view addSubview:hud];
    [hud show:YES];
    return MB_AUTORELEASE(hud);
}

并在任何你想要的地方调用它:

[MBProgressHUD showHUDAddedTo:self.view withText:@"Loading..."];
于 2014-02-16T02:06:42.810 回答
0

对于其他回到此的人,请注意设置:

HUD.hidden = YES;

不足以调用委托方法。您实际上必须调用:

[HUD hide:YES];
于 2015-05-24T19:17:17.513 回答