2

私の状況は私がここで見つけることができる他のすべての例とは異なります。私はタブベースのアプリを持っています。タブの1つで、ユーザは、ウェブサーバから複数のファイルを一度にダウンロードするボタンを押すことができる。警告:分離されたView ControllerにView Controllerを提示することはお勧めしません。

私は組み込みの依存関係を利用できるように、これらのダウンロードをそれぞれ実行するためにNSOperationを使用します。ダウンロードはすべてバックグラウンドスレッド上で行われるので、アプリは応答したままです。最後のダウンロードが完了したら、alertControllerを画面に表示して、ユーザーに完了したことを知らせます。

警告コントローラが、私は警告を取得提示されたとき、ユーザーが別のタブを選択した場合:彼らはダウンロードを開始したのと同じタブに残っている場合は、「デタッチビューコントローラのビューコントローラを提示が推奨され、」

を私は警告を受けていない。

[self.view.window.rootViewController presentViewController:alertController animated:YES completion:nil]; 

[self presentViewController:alertController animated:YES completion:nil]; 

が、結果はalertControllerが提示されることはありませんということです。私は交換してみました。

メインスレッドにalertControllerを表示しています。

ダウンロードが完了したときにユーザーがどのタブビューコントローラを使用しているかを予測する方法がなく、この警告を取り除きたいと思っています。

私はObOS-CでmacOSとXcode 8で開発しています。

+0

[警告:取り外しビューコントローラ上-Presentingビューコントローラが推奨される]の可能な重複(https://stackoverflow.com/questions/19890761/warning-presenting-view-controllers-on-detached-view-コントローラ - は - 落胆) –

答えて

4

ダウンロード結果をUITabBarControllerのようなトップレベルのView Controllerに委譲する必要があります。 UITabBarControllerは確かにknows which tab is selectedであるか、アラート自体を表示することができます。

+0

驚くばかり!このコード行は私の問題を解決しました:[self.tabBarController presentViewController:alertController animated:YES completion:nil]; – Scooter

1

現在のVCからナビゲーションコントローラやVCを提示する上警告修正する書き込み:ビューコントローラを却下しながら、クラッシュを修正するには

[self.view.window.rootViewController presentViewController:viewController animated:YES completion:nil]; 

を:

[self dismissViewControllerAnimated:YES completion:nil]; 

OR

childViewControllerからビューを表示すると、その警告が表示されます。これを避けるには、childViewControllerの親ビューを表示できます。

[self.parentViewController presentViewController:viewController animated:YES completion:nil]; 
関連する問題