2017-03-09 10 views
1

でUISearchControllerを非表示にするにはどうすれば画面が最初に表示されるとき、その上に検索バーなしで表示されるナビゲーションバーを持っています。ナビゲーションバーに検索バーを表示して表示しますが、検索バーを非表示にしてナビゲーションバーのタイトルを再度表示する方法が不思議です。はUINavigationBar

私は次のように検索バーを作成します。

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 

self.searchController.searchResultsUpdater = self; 
self.searchController.searchBar.placeholder = nil; 
[self.searchController.searchBar sizeToFit]; 
//self.tableView.tableHeaderView = self.searchController.searchBar; 
self.sharedNavigationItem.titleView = _searchController.searchBar; 

self.searchController.delegate = self; 
self.searchController.dimsBackgroundDuringPresentation = NO; // default is YES 
self.searchController.searchBar.delegate = self; // so we can monitor text changes + others 
self.definesPresentationContext = YES; 
_searchController.hidesNavigationBarDuringPresentation = NO; 

私はここでしか検索バーを非表示にし、タイトルと通常のナビゲーションバーを表示したい:

enter image description here

+0

再度self.sharedNavigationItem.titleViewを変更しようとしましたか? –

答えて

1

をテストしていない場合あなた自身のナビゲートを使いたいイオンバーでは、まずナビゲーションコントローラのナビゲーションバーを隠すことができます。

[self.navigationController setNavigationBarHidden:YES]; 
//OR 
[self.navigationController setNavigationBarHidden:YES animated:NO]; 

たり、ナビゲーションバーのカスタムタイトルのビューを使用している場合、あなたは

self.navigationItem.titleView.hidden = YES; 

を行うことができたり、バーボタンアイテムをバック非表示にする場合、あなたは

self.navigationItem.hidesBackButton = TRUE; 

を行うことができますあなたが唯一のタイトルを非表示にする場合またはあなたが行うことができます

self.navigationItem.title = @""; 

および

self.navigationController.navigationItem.titleView = nil ; 
+0

なし、検索バーのみを非表示にし、通常のナビゲーションバーを表示します。 – birdcage

+0

あなたのコードで 'titleView'に検索バーを追加し、' self.navigationItem.titleView.hidden = YES; 'と' self.navigationController.navigationItem.titleView = nil; ' –

+0

を使って非表示にしようとしました。 – birdcage

1

あなたが追加してみてくださいすることができますプロパティの下に。

hidesNavigationBarDuringPresentation。参照のために

https://stackoverflow.com/a/12529945/3799720

別のREF:

-(void)viewDidLayoutSubviews{ 

     [self.navigationController setNavigationBarHidden:NO animated:NO]; 

} 

UISearchDisplayController hiding navigation bar

注:あなたが全体のナビゲーションバーを非表示にする場合

+0

ナビゲーションバー全体を非表示にします。私は検索バーを隠し、通常のナビゲーションバーを表示したいだけです。 – birdcage