我有一个启动更新过程的 UIAlertView。
UIAlertView 询问用户是否要更新。
这是我的代码:
- (void)reachabilityChanged:(NSNotification *)notification {
if ([connection isReachable]){
[updateLabel setText:@"Connection Active. Checking Update Status"];
[[[UIAlertView alloc] initWithTitle:@"Update Available" message:@"Your File Database is Out of Date. Would you like to Update?\nNote: Updates can take a long time depending on the required files." delegate:self cancelButtonTitle:@"Later" otherButtonTitles:@"Update Now", nil] show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 1) {
[self updateFiles:[UpdateManager getUpdateFiles]];
}
}
上面的代码运行良好,但是,在我的 updateFiles: 方法中,我需要一些 UI 调整。
- (void)updateFiles:(NSArray *)filesList {
for (NSDictionary *file in filesList) {
[updateLabel setText:[NSString stringWithFormat:@"Downloading File: %@", [file objectForKey:@"Name"]]];
[UpdateManager updateFile:[file objectForKey:@"File Path"]];
}
[updateIndicator stopAnimating];
[updateLabel setText:@"Update Completed"];
}
UIAlertView 直到 updateFiles 方法中的 for 语句运行后才会关闭。
我无法让 updateLabel 显示它当前正在下载的文件,但在更新过程结束时,我们确实会在标签中看到“更新完成”。
有人可以帮忙吗?
更新
我开始怀疑这更像是一个被一些繁重的同步进程延迟的进程。例如,我的[UpdateManager getUpdateFiles]
方法很繁重,涉及从网络获取资源。我的[UpdateManager updateFile:[file objectForKey:@"File Path"]];
方法也是如此。
有什么办法可以强制 UI 更新优先于这些方法?
我只是想给用户一些关于正在发生的事情的反馈。