1

可能重复:
带有 For 循环的 NSProgressIndicator 进度?

这次我有一个简单的问题(希望如此)。我有一个 NSProgressIndicatorView (进度条),我想在 for 循环运行时更新它的值和状态标签:

for(int i=0; i<[nameArr count]; i++)
{
    NSString* str = [nameArr objectAtIndex:i];
    [text setStringValue:str];
    [status setStringValue:[NSString stringWithFormat:@"Processing names...%d of %ld",(i+1),[nameArr count]]];
    [progress setDoubleValue:i];
}

此代码有效,但在整个 for 循环完成之前,状态标签和进度条不会更新。如果我将它们作为 发送,我可以观察它运行时的工作情况NSLog,所以我认为应该有一种简单的方法(不创建NSOperation)来类似地更新我的状态标签和进度条。

有任何想法吗?

4

1 回答 1

1

在进行了一些挖掘之后,可以使用以下代码通过 for 循环异步更新 UI:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    for(int i=0; i<max; i++)
    {
        //Run for loop stuff here

        dispatch_async(dispatch_get_main_queue(), ^(void) {
           //Run UI updates in here 
        });
    }
});
于 2012-11-29T03:17:56.787 回答