1

次のページフローを使用してアプリを作成しています(これは非常に複雑なので、できるだけ明確にするように努めます)。

ログイン->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の方がいいと思います。もちろん、詳細ページをロードするときにデータをキャッシュするコードを記述し、ポップバックするときにデータを再計算する代わりにキャッシュをリロードすることもできますが、「プッシュ」セグエがこれを自動的に行うことを望んでいました。

何かアイデアがあればありがたいです。ありがとうございました。

4

1 に答える 1

0

プッシュを機能させるには、呼び出しを行うIBのビューを選択し、エディターメニューからナビゲーションコントローラーに埋め込む必要があります。

エディター>埋め込み>ナビゲーションコントローラー

于 2012-09-30T16:14:36.743 に答える