一旦显示并返回,我想用搜索栏替换导航栏。
OR
如果导航栏始终放在主视图控制器的内容上[[over,我会没事的。
设置
这样的搜索控制器:_searchController = [[UISearchController alloc] initWithSearchResultsController:[[MySearchViewController alloc] init]];
_searchController.delegate = self;
_searchController.obscuresBackgroundDuringPresentation = TRUE;
_searchController.hidesNavigationBarDuringPresentation = TRUE;
_searchController.searchBar.placeholder = @"Search...";
_searchController.searchBar.delegate = self;
我这样的搜索控制器:显示
- (void)searchButtonTapped:(id)sender
{
self.navigationItem.searchController = _searchController;
[self.navigationController.view setNeedsLayout];
[self.navigationController.view layoutIfNeeded];
[self.navigationItem.searchController.searchBar becomeFirstResponder];
}
我这样的搜索控制器:隐藏
- (void)willDismissSearchController:(UISearchController*)searchController
{
self.navigationItem.searchController = nil;
[self.navigationController.view setNeedsLayout];
}
我知道搜索栏时已经隐藏。当我按下导航栏中的搜索图标按钮时,应将其替换为搜索控制器,并且只有搜索栏在顶部可见。有人知道如何实现这一目标吗?searchController.hidesNavigationBarDuringPresentation
属性与我想要的属性非常接近,但完全相同。因为导航栏仅在我进入搜索栏后才隐藏,但是我希望在present
[self.navigationController setNavigationBarHidden:YES animated:NO];
显示搜索控制器时隐藏导航栏navigationItem.titleView
->这不是我想要的self.definesPresentationContext
,但这似乎与我需要的设置不同self.definesPresentationContext
,但这并不适用,因为我不使用表视图控制器一旦显示并返回,我想用搜索栏替换导航栏。
工作。
当显示UISearchBar时,我使用了导航项的
显示和隐藏 左右蝙蝠按钮项的方法。
如果有更简单的方法可以达到相同目的,我会感兴趣吗?self.navigationItem.hidesSearchBarWhenScrolling