A、B、C という 3 つのビュー コントローラーがあります。このビューを次のようにナビゲートしています。
A -提示中-> B -提示中-> C -提示中-> B
そしてBから、私が却下した場合、Cに移動したいと思います。しかし、その代わりに、今はAに移動しています。CからBへのナビゲーションに、dismiss を使用できません(いくつかの内部問題)。では、どうすればこれを修正できますか?助けてください。
A、B、C という 3 つのビュー コントローラーがあります。このビューを次のようにナビゲートしています。
A -提示中-> B -提示中-> C -提示中-> B
そしてBから、私が却下した場合、Cに移動したいと思います。しかし、その代わりに、今はAに移動しています。CからBへのナビゲーションに、dismiss を使用できません(いくつかの内部問題)。では、どうすればこれを修正できますか?助けてください。
の制限に達しましたdismissModalViewController
:すべてのモーダル ビューが削除されます ( source ):
複数のビュー コントローラーを連続して提示し、提示されたビュー コントローラーのスタックを構築する場合、スタック内の下位にあるビュー コントローラーでこのメソッドを呼び出すと、その直接の子ビュー コントローラーと、スタック上のその子の上にあるすべてのビュー コントローラーが破棄されます。これが発生すると、最上位のビューのみがアニメーション形式で閉じられます。中間のView Controllerはスタックから単純に削除されます。最上位のビューは、そのモーダル遷移スタイルを使用して閉じられます。これは、スタック内の下位にある他のビュー コントローラーで使用されるスタイルとは異なる場合があります。
あなたができることはUINavigationController
、要件に応じてコントローラーを使用して、単にコントローラーをプッシュ/ポップすることです。
または、トップビューを直接呼び出しaddSubview
て、それらが画面全体をカバーし、管理コントローラーが正しく保持/解放されていることを確認することにより、さまざまなコントローラーによって管理されているビューを表示することもできます (追加/削除すると、ビューは自動的に表示されます)。それを別のビューに)。
ヒントとして、次のようにすることができます。
あなたが持っているところでpresentModal...
、使用してくださいaddSubview
。
あなたが持っているところでdismiss...
、使用してくださいremoveFromSuperview
。
ここで提案するように、ビューを管理するView Controllerへの参照をretain
/strong
プロパティに保存します。
こんにちは、「C」viewcontrollerで以下のコードを使用してください
[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];