0

私の最初のコントローラーはUITabelであり、セルが渡されると、2番目のビューコントローラーにプッシュされます。2 番目のコントローラーは Web サービスからデータをロードするため、セグエに少し時間がかかります。セルが選択されたときに SVProgressHUD を表示し、データが読み込まれた後にそれを閉じたいと思いますが、代わりに SVProgressHUD は、2 番目のビューが読み込まれた後、数ミリ秒間だけ表示されます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [SVProgressHUD show];
    UITableViewCell *acell = [tableView cellForRowAtIndexPath:indexPath];
    [self performSegueWithIdentifier:@"pushCell" sender:acell];
}

セルが選択されたときにすぐに SVProgressHUD を表示する方法はありますか?

4

1 に答える 1

4

Apple は、ユーザーが tableViewCell をクリックしたときに、アプリがすぐに次のビュー コントローラーに移行することをお勧めします。次のビューの読み込み中に SVProgressHUD を表示する必要があると感じているという事実は、同期メソッドを使用してデータを要求していることを示唆しています。これにより、メイン スレッドがブロックされ、アプリが待機中にフリーズしたように見えます。応答。

データを取得するためのベスト プラクティスは、常に非同期 (またはバックグラウンド スレッド) で行うことで、アプリが常に応答性を維持できるようにします。initWithRequest:delegate:リクエストを非同期メソッドに変更することをお勧めします (たとえば、NSURLRequest メソッドを調べてください)。これを使用すると、2 番目のコントローラーの viewDidLoad メソッドで SVProgressHUD を表示できます。ユーザーがテーブル セルをタップすると、2 番目のビュー コントローラーへの移行が即座に行われ、ユーザーが待機している間アプリがロックされることはありません。ダウンロードするデータ。

Apple Documentationからのこのメソッドの詳細は次のとおりです。

于 2012-08-19T02:53:07.350 に答える