これは、ブール値を使用して、ファイルの構築が完了するまでアイテムの戻りを保持することで実行できます。進行状況を表示したり、メイン ビューにアクティビティ インジケーターを表示したりしたい場合は、メイン スレッドから呼び出してこれを行うことができます。以下は、実際のコード スニペットです。
進行状況ビューをロードするには、この関数を使用してプロバイダーでアクティビティ ビュー コントローラーを設定します。
self.parentViewController = parentVc;
これは、ブロッキングとフィードバックのビュー ロードを備えたアイテム関数です。
self.wait = true;
[self prepareFile:^(){
[self performSelectorOnMainThread:@selector(dismissProgressView)
withObject:nil waitUntilDone:NO];
}];
[self performSelectorOnMainThread:@selector(loadProgressView)
withObject:nil waitUntilDone:NO];
while (self.wait) {
[self performSelectorOnMainThread:@selector(updateProgressView)
withObject:nil waitUntilDone:NO];
}
return self.completedUrl;
その後、進行状況ビューを表示するためにメイン スレッドで呼び出される 3 つの関数を作成し、ファイルの完了を待っている間に進行状況ビューを更新できます。disconnectProgressView 関数の実装では、dismissViewController が完了したときに待機ブール値を false に設定してください。