通常どおりプッシュを実行しますが、アニメートしないように設定します。
すなわち
[self.navigationController pushViewController:newViewController animated:NO];
その後、戻りたいときは...
[self.navigationController popViewControllerAnimated:NO];
次に、2つのナビゲーションバーを作成できますが、アニメーション化されていないのと同じバーのように見えます。
ビューでアニメーション化してナビゲーションバーを維持するように編集します
アプリの全体的な流れはわかりませんが、ナビゲーションバーを維持して新しいUIをスワイプしたい場合は、スクロールビュー(ページングあり)を作成して、各VCのビューをの異なるフレームに配置できます。スクロールビューか何か。
とにかくナビゲーションバーを動かさないようにしたいのはなぜですか?ナビゲーションバーをアニメーション化し、同じボタンなどを維持することに問題はありません。
そうは言っても、異なるVCを使用している場合は、ナビゲーションバーを変更して、現在表示しているVCの詳細(つまりタイトル)を表示する必要があります。
もう1つの根本的なアプローチ
OK、今横方向に考えています:D
アニメーション化されていないプッシュアンドポップ(上記のように)を使用しますが、UIを表示するだけでなく、関連する側からアニメーション化することもできます。(シングルトンまたはVCサブクラスをUIのサブクラスにすると、すべてのビューコントローラーでこれを実行できます)。
次の問題は、新しいUIでアニメーション化する前に、UIがすぐに空白になっているように見えるため、古いUIをアニメーション化する必要があることです。つまり、両方のUI(古いものと新しいもの)を同時に画面に表示する必要があります。
これを回避するには、古いUIのビュー全体を画像に変換し(リンクを見つけるのは難しくありません)、この画像を新しいVCに渡します。新しいVCは、この画像を即座に表示し、独自のUIを画面上でアニメーション化すると同時に、画面外でアニメーション化します。
思ったほど難しいことではありません。特に、UIViewController adをサブクラス化する場合は、関数animateUI
とプロパティoldUIImage
、およびを指定しdirection
ます。次に、このクラスのviewWillAppearをオーバーライドして、アニメーションを実行できます。次に、あなたがしなければならない唯一のことは、あなたがそれにプッシュ/ポップするとき、各VCに画像と方向を与えることです。
これは、あなたが何を求めているのかという幻想を与えるだけであり、アプリのかなり単純なオブジェクトモデルとフローを維持できることを意味します。
...か何か。