2012-01-21 4 views
8

次のコードを使用して、detailViewController(私の2番目のビュー)である のナビゲーションバーを非表示にして、MasterViewControllerから自分のオブジェクトをタップすると、私の最初のビュー)。私はsearchDisplayController を使用してmasterViewControllerのテーブルリストをフィルタリングし、その結果から任意のオブジェクトをタップするとsetNavigationBarHidden:searchDisplayControllerでYESが機能しない

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 

しかし、detailViewでnavigationBarが隠さ取得していません...

は私がしなければなりませんのsearchDisplayControllerを使用すると、navigationBarを非表示にする余分な作業は何ですか?デバッグのための

、私はsetNavigationBarHiddenの行にブレークポイントを設定します。私は、検索結果を経由してdetailViewControllerに行くYES、とさえ 場合、アプリケーションが行を打つ..

+3

[self.navigationController setNavigationBarHidden:YES animated:animated]; viewDidAppearではうまくいきますが、2番目のビューが表示される前に非表示にしたいと思っています:( – sora

答えて

13

あなたshuold置く[self.navigationController setNavigationBarHidden:YES]; viewWillLayoutSubviewsのfunction.like this:

- (void) viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 
    [self.navigationController setNavigationBarHidden:YES]; 
} 

これが動作します。

0

あなたはナビゲーションを非表示にする場合bar、MainWindow xibでNavigation Controllerの "Show Navigation Bar"属性のチェックを外します。

これは、プロジェクト全体のナビゲーションバーを非表示にします。任意のコントローラセットにナビゲーションバーを表示する場合は、そのコントローラのViewDidLoadメソッドでNavigationBar Hidden = NOを指定します。

+0

私はnavigationBarをプログラムで実装していますので、setNavigationBarHiddenは唯一のオプションです...検索結果:( – sora

0

ナビゲーションディスプレイバーを隠すには、何らかの方法で検索ディスプレイコントローラをハックする必要があります。ここ

が答えです:

https://stackoverflow.com/a/6337037/1348121

0

この

- (void) viewWillLayoutSubviews 

は、レイアウトの問題を引き起こすので、私は以下のコードを使用します。私のためにうまく動作します。

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:NO]; 
} 
1

あなたは、この方法を試してみてください:上記のコードは差がある場合がござい

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    // if you want to hide Navigation Bar when searchController will become active 
    _searchController.hidesNavigationBarDuringPresentation = YES; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    _searchController.hidesNavigationBarDuringPresentation = NO; 
} 

:あなたは、あなたが(だけ例えば)2つのメソッドを実装する必要がありUISearchController *searchControllerを宣言し、そのコントローラでは、
を。 hidesNavigationBarDuringPresentationプロパティの主なポイント(iOS 8.0以降)それを試してみて、新しいコントローラーを押す前にhidesNavigationBarDuringPresentation = NOに切り替えてください。この操作の後、私は利益を取った:UIViewControllerをプッシュすると、セッターsetNavigationBarHidden:YESが有効になる

関連する問題