0

これは確かに何もありませんが、すぐに表示されない UIView に問題があります。

コードは次のとおりです。

SettingViewController.m

- (IBAction)reloadParametersDB:(id)sender {
    LoadingView* loadingView = [LoadingView loadLoadingIntoView:self.view];
    [dbService fillParametersTables];
    [loadingView removeLoading];
}

LoadingView.m

+(LoadingView *)loadLoadingIntoView:(UIView *)superView{
    LoadingView *loadingView = [[LoadingView alloc] initWithFrame:superView.bounds];
    if (loadingView == nil) return nil;
    loadingView.backgroundColor = [UIColor blackColor];
    [superView addSubview:loadingView];
    return loadingView;
}

loadLoadingIntoView で何かを印刷しているときにそれが表示されるため、機能します。実際の問題は、fillParametersTables が完了した後に addSubview が有効になることです...

誰もそれを行う方法を知っていますか?

ありがとう !

4

1 に答える 1

1

表示を更新するには、イベントループに戻る必要があります。1つの方法は、ロードビューを独自のメソッドに設定した後に行を配置し、それを使用performSelector:withObject:afterDelay:して実行することです。

例えば:

- (void)doTableLoading:(id)loadingView {
    [dbService fillParametersTables];
    [(LoadingView *)loadingView removeLoading];
}

- (IBAction)reloadParametersDB:(id)sender {
    LoadingView* loadingView = [LoadingView loadLoadingIntoView:self.view];
    [self performSelector:@selector(doTableLoading:) withObject:loadingView afterDelay:0.1f]
}

(このコードはHTMLフォーム内に記述されており、コンパイルすらできない場合があります...ただし、戦略のアイデアが得られるはずです。)

于 2012-11-20T17:08:58.457 に答える