UIProgressView不会在循环中更新

Pet*_*erK 1 objective-c uiprogressview

我正在加载一个文件,并希望在UIProgressView中显示进度.我可以设置初始值:

[loadingProgressView setProgress: 0.00];
Run Code Online (Sandbox Code Playgroud)

..in viewDidLoad这完美无缺.

我唯一要做的就是在每个循环中向条添加0.1,但它不会更新:

 while (eOF != 99999) {

    ...

    [loadingProgressView setProgress:loadingProgressView.progress + 0.10];

 }
Run Code Online (Sandbox Code Playgroud)

我已经检查过,但每次循环时都没有真正找到任何更新栏的内容.

有人可以就此分享一些建议吗?

--- UPDATE ---

尝试了这个没有成功:

while (eOF != 99999) {

    ...

    [loadingProgressView setProgress:loadingProgressView.progress + 0.10];
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];

 }
Run Code Online (Sandbox Code Playgroud)

jba*_*100 11

您正在循环阻塞主线程的while循环,UI元素将无法刷新,直到主线程变为可用.解决此问题的最佳方法是在后台线程中运行此代码(在主线程上进行UI调用).

或者(我不确定这个,看到这个讨论)你通过调用让主线有一些喘息的空间

NSDate* futureDate = [NSDate dateWithTimeInterval:0.001 sinceDate:[NSDate date]];
[[NSRunLoop currentRunLoop] runUntilDate:futureDate];
Run Code Online (Sandbox Code Playgroud)