0

更新プロセスを開始する 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"];
}

updateFiles メソッドの for ステートメントが実行されるまで、UIAlertView は閉じません。

updateLabel に現在ダウンロード中のファイルを表示させることができませんが、更新プロセスの最後に、ラベルに「Update Completed」が表示されます。

誰でも助けることができますか?

アップデート

これは、いくつかの重い同期プロセスによって遅延しているプロセスであると疑い始めています。たとえば、私の[UpdateManager getUpdateFiles]方法は負荷が高く、Web からリソースを取得する必要があります。[UpdateManager updateFile:[file objectForKey:@"File Path"]];私の方法も同様です。

これらの方法よりも UI の更新を優先させる方法はありますか?

何が起こっているのかについてユーザーにフィードバックを提供しようとしているだけです。

4

1 に答える 1