1

何かのときにプログレスバーを表示したいのですが、プログレスバーが変化しません。私がやろうとしたことは?

dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_group_async(group, queue, ^{
    for (int i = 0; i < 100; i++)
    {
        dispatch_group_async(group, dispatch_get_main_queue(),^{
            self.progressBar.progress = (float)i/100;
        });

        // do big somethings
    }
});
4

3 に答える 3

1

元の質問では、0 から 100 までの整数として設定しprogressていました。UIProgressViewprogress

dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_group_async(group, queue, ^{
    for (int i = 0; i < 100; i++)
    {
        dispatch_group_async(group, dispatch_get_main_queue(),^{
            self.progressBar.progress = ((CGFloat) i) / 100.0;
        });

        // do big somethings
    }
});

または、もっと簡単に言えば、実際にはグループを使用していないためです (グローバル キューには 1 つの操作しかなく、シリアル キューを処理する場合、グループは通常冗長です)。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_async(queue, ^{
    for (int i = 0; i < 100; i++)
    {
        dispatch_async(dispatch_get_main_queue(),^{
            self.progressBar.progress = ((CGFloat) i) / 100.0;
        });

        // do big somethings
    }
});

それでも進行状況ビューの更新が表示されない場合は、IBOutlet正しく接続されていないなどの単純なものである必要があります。self.progressBarでないことを確認してくださいnil。に設定しprogressてみ0.5て、正しく反映されることを確認してください。

于 2013-02-20T16:32:25.030 に答える
0

使用することをお勧めします

dispatch_queue_t queue = dispatch_queue_create("com.company.myqueue", NULL);

進行状況を更新するため。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

は同時キューです。

于 2014-08-19T03:02:13.930 に答える
-1

メイン スレッドでプログレス バーを更新する必要があります。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{

    // async stuff

    dispatch_sync(dispatch_get_main_queue(), ^{

        // sync stuff
    });
});

dispatch_release(queue);
于 2013-02-20T16:47:45.463 に答える