xcode プロジェクト (iOS ではなく Mac OS X) で NSProgressIndicator を使用しています。進行状況インジケーターにダウンロードの進行状況を表示しながら、ファイルの非同期ダウンロードを実行しようとしています。私のプロジェクトでは、更新ボタンをクリックするとダウンロードが開始されます。データを受信するたびに進行状況が更新され、アプリ デリゲートの update_progress メソッドが呼び出されます。
NSLogs からわかるように、進行状況の値がそのメソッドに渡されます。この値で進行状況インジケータに setDoubleValue を使用しても効果はありません。ただし、静的な値 (setDoubleValue:50.0f など) を使用すると、進行状況インジケーターが更新されます。
.m では、loadData メソッドがダウンロードを開始します。ここで、ファイルを保存する場所 (self.strFileNameWithPath) を設定し、その数行下にファイルのダウンロード元の場所を設定できます。私はちょうど 2.5 MB のファイルを使用しています。小さいですが、いくつかのダウンロード手順を実行するには十分な大きさです。
インターフェースで、「更新」ボタンをクリックしてダウンロードを開始します。チャンクが受信されると、コンソールに進行状況の更新が表示されます。
なぜこれが起こっているのか、どうすれば修正できるのか、誰かが知っていますか? 前もって感謝します!
編集:矛盾のある方法は次のとおりです。
- (void)update_progress:(float)value{
double thevalue = (double)value;
NSLog(@"value: %f",thevalue);
[self.progress_indicator setDoubleValue:thevalue];
NSLog(@"Prgoress: %f",[self.progress_indicator doubleValue]);
}
各進捗ステップで、value は正しい進捗値を示しますが、2 番目の NSLog が 0.0 を返すため、進捗インジケータは setDoubleValue に反応しません。
以下は、コンソールに表示される内容です。
value: 2.770802
Prgoress: 0.000000
value: 22.662386
Prgoress: 0.000000
value: 69.881004
Prgoress: 0.000000