2017-03-09 55 views
1

我有一个导航栏,当屏幕第一次显示时,其上没有搜索栏显示。我在导航栏中触发并显示搜索栏,但我想知道如何隐藏搜索栏并再次显示导航栏标题。如何隐藏UINavigationBar中的UISearchController

我创建的搜索栏如下:

_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 = @""; 

And

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

无,我只想隐藏搜索栏并显示正常的导航栏。 – birdcage

+0

在您的代码中,您在'titleView'中添加了搜索栏,然后尝试使用'self.navigationItem.titleView.hidden = YES;'隐藏,然后'self.navigationController.navigationItem.titleView = nil;' –

+0

它没有帮助。 – birdcage

相关问题