我一直试图让这个工作一天,但我仍然失败。安装应用程序时,我想将一些文件从捆绑包中复制到我的应用程序的 Documents 文件夹中,但这会使用户等待很长时间,应用程序显示启动画面。
所以我想我会用 UIProgressView 作为一个子视图创建一个初始 UIAlertView,每次将文件复制到文档文件夹时都会更新它。但是,警报显示并且进度条永远不会更新。我的逻辑是:
- 将 UIProgressView 和 UIAlertView 设置为我的 ViewController 的实例变量。
- 在 ViewDidLoad 中,显示警报并设置委托
在
- (void)didPresentAlertView:(UIAlertView *)alertView
执行复制文件并更新 UI 的 for 循环中。代码是:- (void)didPresentAlertView:(UIAlertView *)alertView{ NSString *src, *path; src = // path to the Bundle folder where the docs are stored // NSArray *docs = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:src error:nil]; float total = (float)[docs count]; float index = 1; for (NSString *filename in docs){ path = [src stringByAppendingPathComponent:filename]; if ([[NSFileManager defaultManager]fileExistsAtPath:path]) { ... // Copy files into documents folder [self performSelectorOnMainThread:@selector(changeUI:) withObject:[NSNumber numberWithFloat:index/total] waitUntilDone:YES]; index++; } } [alertView dismissWithClickedButtonIndex:-1 animated:YES]; }
ChangeUI 的代码是
- (void) changeUI: (NSNumber*)value{
NSLog(@"change ui %f", value.floatValue);
[progressBar setProgress:value.floatValue];
}
然而,这只是将 UI 从 0 更新到 1,尽管 NSLog 会打印所有中间值。这里有谁知道我做错了什么?
提前致谢。