0

MDProgressHUD を使用して、NSConnection を使用するダウンロードの進行状況を管理しています。すべてがうまくいっています。connectionDidFinishLoading が呼び出されたときに HUD の labelText を Downloading から Finishing Up に変更しようとすると問題が発生します。

私の 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

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 に答える