2

私はこれをどこでも探してきたので、最後の手段として私は質問をするべきだと思いました。

XCodeでストーリーボードを使用していて、最初のビューとしてナビゲーションコントローラーがあります。このナビゲーションコントローラーのルートビューはテーブルビューです。このテーブルビューでは、ナビゲーションバーにボタンがあり、モーダルセグエを介してナビゲーションコントローラーにビューを水平方向に反転します。このコントローラーのルートビューは私のマップビューです。さて、このマップビューを使用して閉じたい場合[self dismissViewControllerAnimated:YES completion:nil]は機能しません。ナビゲーションコントローラーを外せばそうです。したがって、dismissViewControllerがナビゲーションコントローラーに渡され、何も行われていないと推測しています。ナビゲーションコントローラーが呼び出しを処理して渡すためのクラスを実装できることは知っていますが、どうしても必要な場合を除いて、それは実行したくありません。

したがって、この質問を解決するには:

  1. 水平方向の反転アニメーションを使用してテーブルビューからマップビューに、またはその逆に切り替える方法が必要です。

  2. 両方のビューにナビゲーションコントローラーが必要です。同じものでも、別のビューでもかまいません。トランジションは水平方向のフリップトランジションを行わないプッシュであるため、同じものを使用する方法を見つけることができないようです。

助けてくれてありがとう!

4

1 に答える 1

3

selfあなたが電話するときは誰[self dismissViewControllerAnimated:YES completion:nil]ですか?

このメッセージの受信者は、却下するモーダルビューコントローラーを提示したビューコントローラーである必要があります。提示されたビューコントローラー、または(UINavigationControllerそれが管理するビューコントローラーの1つなどのコンテナービューコントローラーの場合)でそれを呼び出すと、UIKitは正しいことを実行しようとしますが、常に成功するとは限りません。

self参照しているのがマップビューを含むビューコントローラであると仮定すると、呼び出す必要のあるオブジェクトを取得するためのプロパティpresentingViewControllerを取得できますdismissViewControllerAnimated:completion:。(その間にあるナビゲーションコントローラーを取得する必要がある場合は、navigationControllerプロパティを使用します。)

于 2012-09-04T05:50:10.470 に答える