3

iOS での UIViewControllers の変更に関するドキュメントを読んで、モーダル ビュー コントローラーの提示の間の相互作用がカスタム コンテナー ビュー コントローラー内でどのように機能するかを理解しようとしています。最終的に、私ができるようにしたいのは、それらのコントローラーの一部が子ビューコントローラーによって提示されている場合でも、提示されたビューコントローラーのチェーンを確実にウォークスルーすることです。

(私はアプリではなくライブラリで作業しているため、対話する階層を作成していません。単にライブラリがさまざまな種類の階層内で正しく動作することを確認しようとしています。)

私の質問は、誰かが子View ControllerからView Controllerを提示しようとするとどうなりますか?

[childViewController presentViewController:viewController animated:YES completion:nil];

提示されたView Controllerは、それが破棄されるまで対話を「引き継ぐ」ことを意図しているため、プレゼンテーションリクエストがその親に転送されることは理にかなっています(または実際には、parentViewControllersのチェーンを上にあるView Controllerに到達するまで親ViewControllerなし)、そのView Controllerから表示されます。そうでなければ、開発者が 2 つの異なる子からモーダル ビュー コントローラーを提示するなどのことができるように思えます。これは私には問題があるようです。(たとえば、提示されたビュー コントローラーはどれが優先されますか?)。

さらに、上記が本当なら、それはいくつかの意味を持ちそうです。親View Controllerが表示されたView Controllerを表示している場合、これは何を返しますか?

[childViewController presentedViewController];

nil親が表示しているからでしょうか。または、この要求を親に転送して、parentViewControllerとそのいずれかchildViewControllersがすべて同じ結果になるようにすることはできますか?

とにかく、いくつかのシナリオの実行を開始するためのサンプル プロジェクトが用意されていますが、見落としているドキュメントがあるかどうか知りたいです。または、誰かがこの相互作用がどのように行われるかをすでに知っている場合はどうなりますか?

4

2 に答える 2

2

少し前にコンテナ ビュー コントローラに取り組んだところ、デフォルトの実装では存在するかどうかがチェックされ、parentViewController存在する場合はメッセージが親に渡されることがわかりました。

ドキュメントが見つからなかったので、100% 信頼することはできません。

于 2012-05-08T02:21:04.677 に答える
1

Dr.Touch はまさにその点について優れた投稿をしています。

http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

View Controller Containers に興味がある場合は必読です。

于 2012-04-27T14:33:06.550 に答える