2012-04-27 3 views
0

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

私の接続のDidFinishLoadingメソッドでは、labelTextを変更して、アイコンのチェックマークをアプリケーションに変更します。

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

このコードの直後に、ダウンロードを解凍してデータベース操作を行います。

何らかの理由で、機能の終了に達するまで変更されません。 [HUD非表示:はいafterDelay:4];が呼び出されます。

ダウンロードがいっぱいで、アプリがぶら下がったり凍っているように見せたりするため、コンテンツを解凍する前に変更したいと思います。

私はzipArchiveを使用して、重要であれば抽出を行います。

アドバイスをいただければ幸いです。

+0

[HUD非表示:はいafterDelay:2]が呼び出されたときだけ、モディファイが変化するようです。しかし、ドキュメントでは、モードの設定はスレッドセーフでなければならないと言います。実行中にショーでそれを実行するのがうまくいくのだろうか。 – user1086377

+0

showWhileExucutingを使用しても動作しませんでした。今度は看板が消えて、私はそれを見せてもらえません。 – user1086377

答えて

0

はこれに戻って他の誰のために、その設定に注意してください:デリゲートメソッドが呼び出されるため

HUD.hidden = YES; 

が十分ではありません。あなたは実際に電話しなければなりません:

[HUD hide:YES]; 
0

あなたがしようとしました:

[HUD setNeedsLayout]; 
[HUD setNeedsDisplay]; 
+0

私はコードを追加しました。違いを生むようには見えなかった。 – user1086377

0

MBProgressHUDは(できるだけ早くあなたがそれをobserveValueForKeyPath変更としてラベルなど、進捗状況、などのプロパティの変更を検出するためのKVOを使用しています)UIを実行し、更新する必要があります。あなたのコードが本当に集中的でUIをブロックしている可能性はありますか?

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

を、次のように.mファイルでそれを実装します:私はあなただけMBProgressHudのヘッダファイルには、このメソッドを追加する必要があります...それは前に起こる

0

を見てきました

+ (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..."]; 
+0

だから私は一度HUDを追加して、テキストを変更するだけで(隠して再度表示することなく)、それを行う方法は? – Ans

+1

ビューからhudを取得し、labelTextプロパティを変更するだけです – jhurray

2

これは私

のために働いていました
dispatch_async(dispatch_get_main_queue(), ^{ 
    progressView.titleLabelText = @"Downloading ..."; 
}); 
関連する問題