2009-07-06 2 views
3

私は現在、うまく動作するUINavigationControllerベースのアプリケーションを持っています。私はUINavigationControllerスタックにいくつかのレベルの深いビューコントローラの1つを、ユーティリティアプリケーションなどで実証されているように "フリップサイド"タイプのビューを持つようにしたいと思います。非常に一般的なことです。UINavigationController階層の真ん中にFlip View型コントローラを追加する

ここでの問題は、前後に反転する両方のビューコントローラを管理する中間ビューコントローラを作成したことです。中間ビューコントローラは、階層内で独自のナビゲーションバーを傍受してオーバーライドします。既存のビューコントローラのナビゲーションバーがマスクされ、ビュー全体がシフトダウンされます。

私のようなものをやってみました:

それは、独自のnavigationItemsを持っているようmyOriginalViewControllerから私の全体のビューを壊し
myFlipViewController.view = myOriginalViewController.view; 

。私は基本的には、myFlipViewControllerを、myOriginalViewControllerとothersideViewControllerを反転することを制御する透明なプロキシとして機能させたいだけです。 myOriginalViewControllerのnavigationItemsはまだ表示されます。

私はビューコントローラの中でsetNavigationBarHiddenの組み合わせを試しましたが、何もそのトリックをやっていないようです。

UINavigationControllerスタックの途中でflipViewControllerを導入する最善の方法は何ですか?

答えて

9
@implementation YourViewControllerInTheMiddleOfTheStack 

- (void)presentFlipSideViewController:(UIViewController *)flipsideViewController 
{ 
    flipsideViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self.navigationController presentModalViewController:flipsideViewController animated:YES]; 
} 

@end 
+0

は、このコードで何が悪いのでしょうか?モーダルビューコントローラーはナビゲーションバーを隠す必要があります。自分自身の「偽の」ナビゲーションバーを使用するか、まったく残しておくことができます。最高のソリューションのようだ。 – pix0r

+0

は、あなたが望むことを簡単に行う方法のようです。代替案よりもはるかに優れています。 –

-2
- (void)presentFlipSideViewController:(UIViewController *)flipsideViewController 
{ 
    flipsideViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self.navigationController presentModalViewController:flipsideViewController animated:YES]; 
+1

@ hatfinchの答えは、これとどのように異なっているか改善していますか? – Mark

関連する問題