2017-11-28 10 views
0

基本的な質問からポップアップのように:iOSのショーのUIViewControllerどこ

確実な方法(異なるスレッドからを含む)アプリの寿命の任意の時点で、モーダルUIViewControllersを示すトリガするためにありますか?

私の現在のアプローチは、表示されているViewController(window.rootViewController +階層のトラバースによって見つけられましたが、それは重要ではありません)でpresentViewControllerを呼び出すことです。これは一般的には機能しますが、ナビゲーションアクションやアニメーションが行われるなどの理由で無視されることがあります。

など。表示されるポップアップのためのバックグラウンドスレッド信号、ViewController上でpresentViewControllerが呼び出され、解約されています。 が表示されていない場合(いくつかのインスタンスが複数回表示されている場合)、信号を繰り返すなどのいくつかの回避策を試しましたが、これはwhackamoleのゲームになりました。

ポップアップの下でナビゲーションを行うこともできますが、今の主な問題は信頼性だけです。明確にすることが

編集

、私はベテラン開発者です。スレッディングが適切に処理され、インスタンスとタイプの管理が機能しています。私の問題は、角のケースである をすべて管理することであり、それを行う方法の基本ではありません。

+1

まずUIの変更はすべてUIスレッドで行う必要があるため、異なるスレッドはオプションではありません。第二に私はあなたが何か起こっていることに関係なくいつでもこれを表示したいと思っています。なぜなら、すべてのウィンドウの上にウィンドウを追加し、表示/非表示を手動で処理するのはなぜですか? – Lefteris

+0

スレッディングが正しく処理されていますが、それは問題ではありません。私はある時点でウィンドウを使って直接作業してみましたが、それに重なっている問題がありました。たぶんもう一度試してみるべきでしょうか? – PeejWeej

+0

あなたが必要とするのは、クラスをシングルトンにすることです。その方法では、ビューのインスタンスが1つだけロードされます。表示と非表示が重なり合うことはありません。 – GeneCode

答えて

0

マルチスレッド環境で異なるVCを示すスレッドセーフなメカニズムが必要な場合は、コントローラの表示/非表示を管理するオブジェクトを作成できます。また、プレゼンテーション/ディスマイズにいくつかのキューを作成します。あなたの信号が発生すると、キュー内の現在のVCを破棄した後、プレゼンテーションの操作が次に行われます

関連する問題