2011-10-26 17 views
3

現在、私のアプリケーションの1つにMGSplitViewControllerを統合していて、正しく動作しています。MGSplitViewControllerのポートレートモードのマスタービューと詳細ビューの両方を表示

しかし、ポートレートモードで現在表示されている方法を変更したいと思います。アプリケーションを開くときにポートレートモードにしたいのですが、マスターと詳細ビューコントローラの両方を表示する必要があります。左のルートビューコントローラを非表示にして表示します。

だから、私は私が望んでいるとして今肖像画や風景モードの両方がルートと詳細の両方のビューコントローラを示している

- (BOOL)shouldShowMasterForInterfaceOrientation:(UIInterfaceOrientation)theOrientation 
    { 
    // Returns YES if master view should be shown directly embedded in the splitview, instead of hidden in a popover. 
    //return ((UIInterfaceOrientationIsLandscape(theOrientation)) ? _showsMasterInLandscape : _showsMasterInPortrait); 

    return YES; 
    } 

にコードを変更しましたが、問題は、ナビゲーションバーのボタンが&ショーの左側を非表示にする機能していないですルートビューコントローラ。

すべての身体でこれを行っていますか?

答えて

1

は、代わりにMGSplitViewControllerソースを変更したり、それをサブクラス化するのは、アプリケーションコードからのオンとオフを切り替えるマスターするMGSplitViewControllershowsMasterInPortraitプロパティを使用することができます。これはいつも私のためにうまくいった。仕様と

更新:

私は、分割ビューコントローラが提供するバーボタンアイテムを使用することはありません - それは、我々の目的のために過度に有用ではないのです。代わりに、自分のスプリットビューコントローラーのshowsMasterInPortraitプロパティをトグルする関連するアクションで、独自のボタンを設定します。後者に到達するには、コンセントプロパティを配線します。また、ボタンを横に隠す場合は、ボタン自体のコンセントも必要です。 IBで正しく配線されていることを確認してください。

@property(nonatomic,assign) IBOutlet MGSplitViewController* splitVC; 
@property(nonatomic,assign) IBOutlet UIBarButtonItem* toggleButton; 
- (IBAction)toggleMasterViewTouched:(id)sender; 

とクラス定義の中で:ヘッダで

が、それはこのようなものを意味し、あなただけのボタンが縦に表示したい場合は

@synthesize splitVC, toggleButton; 

- (IBAction)toggleMasterViewTouched:(id)sender 
{ 
    BOOL master_shown = !self.splitVC.showsMasterInPortrait; 
    // Note: toggle the button's label text and/or icon between "hide" and "show" versions 
    self.toggleButton.title = master_shown ? @"Hide Master" : @"Show Master"; 

    self.splitVC.showsMasterInPortrait = master_shown; 
} 

を、あなたも必要になります自動回転でそれを隠すには、回転イベントに応答します(まだ詳細コントローラ内)。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    // hide when in landscape, show when in portrait 
    self.toggleButton.hidden = UIInterfaceOrientationIsLandscape(toInterfaceOrientation); 
} 

それはうまくいけばすべてでなければなりません。 showsMasterInPortraitのデフォルトを設定し、トグルボタンのラベルと可視性をどこかに設定することもできます(おそらくviewDidLoad)。

+0

ここにスニペットを置くことができますか? – raaz

+0

私はいくつかのコードを追加しました。私はそれが助けてくれることを願っています! – pmdj

+0

私は以下の変更を行ったが、まだ動作していない..現在xcode4.2を使用しています... iOS5シミュレータ...あなたがそのサンプルアプリケーションを完了していれば、私はあなたに私のコードを送ることができます – raaz

関連する問題