0

私は数学関数(約O ^(10 ^ 7))を持っており、結果を検索している間、進行状況を表示する必要があります。だから私はプログレスバーを持っています。問題は、進行状況バーを更新する方法です。私はそれをやろうとしました:

self.progressBar.progress = 0.0;
self->progress = 0.0;
for (1..10^7) {
    ...
    if (self.progressBar.progress < self.progress + 0.01) {
        [self updateProgress];
    }
}
[self updateProgress];
4

2 に答える 2

2

別のスレッドで操作を実行します。それは必須です。

操作をステップに分けてもらえますか? 歩数わかりますか?次に、すべてのステップの後に進行状況バーをstepIndex/numStepsパーセントに更新します。

操作をステップに分割できないが、操作にかかる時間がわかっている場合は、バーをtimeSinceStart/expectedTimeパーセントに更新できます。NSTimer定期的な更新にはa を使用します。

それができない場合は、 のみを使用してください。つまり、UIActivityIndicatorアプリケーションが何かを実行していることを示しますが、操作にかかる時間を示していないコンポーネントです。

于 2013-03-29T22:12:53.177 に答える
1

時々あなたはしなければなりません:

CFRunLoopRunInMode (CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent()), 0, FALSE);

進行状況バーを更新する UI を取得します。

また、.. animation:YES があり、iOS のすべてのバージョンで利用できるわけではありません。

updateProgress メソッドで代わりに検討することをお勧めします。

if ([activityProgressView respondsToSelector:@selector(setProgress:animated:)]) {
    [activityProgressView setProgress:0.5 animated:YES];
}
else {
    [activityProgressView setProgress:0.5];
}
CFRunLoopRunInMode (CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent()), 0, FALSE);
于 2013-03-29T22:06:16.297 に答える