次のページフローを使用してアプリを作成しています(これは非常に複雑なので、できるだけ明確にするように努めます)。
ログイン->MainViewController
現在、MainViewControllerはiOS 5のコントローラー封じ込めを使用して、2つのビュー/コントローラーをホストしています。
MainViewController
/ \
FirstController SecondController --> DetailsController
SecondControllerから、別のView Controllerにセグエしたいと思います(MainViewControllerを「マスター」と考えると、「詳細」と考えることができます)。
SecondControllerから、「モーダル」セグエを使用してDetailsControllerにセグエできます。しかし、「ポップ」バックすると、iOSはMainViewControllerをリロードします。私はそれをしたくありません。
「プッシュ」セグエを使用すると、スタックにUINavigationControllersがないというランタイムエラーが発生します。罰金。
そこで次に試したのは、MainViewControllerを新しいUINavigationControllerのルートコントローラーにしようとしたことです。
Login --> UINavigationController --> DetailsController (but "initiated" by Second)
|
MainViewController
/ \
FirstController SecondController
次に、SecondControllerから、UINavigationControllerに「プッシュ」セグエを実行するように指示します。しかし、それでも同じランタイムエラーが発生します-UINavigationControllerが見つかりません。
ナビゲーションスタックがどのように機能するかを理解してはいけません。UINavigationControllerからperformSegueWithIdentifier:を呼び出していると確信しているため、呼び出し元をチェックしていない可能性があります。
私は「あなたの2番目のiOSアプリ」をガイドとして使用していましたが、彼らはこの方法(モーダルセグエ)を規定しています。しかし、私は本当に可能であればMainViewControllerを再ロードしたくありません(それはいくつかの高価なことをしています)。ビュー/コントローラー/データを「キャッシュ」するよりもiOSの方がいいと思います。もちろん、詳細ページをロードするときにデータをキャッシュするコードを記述し、ポップバックするときにデータを再計算する代わりにキャッシュをリロードすることもできますが、「プッシュ」セグエがこれを自動的に行うことを望んでいました。
何かアイデアがあればありがたいです。ありがとうございました。