在我的应用中,我有以下设置:
tableView有一个UISearchController,搜索栏是一个表头视图
_tableView.tableHeaderView = _searchController.searchBar;
我想要实现的目标是:
当搜索栏未显示时,该表看起来就像那个栏从未出现过(没有空标题单元格或类似的东西)
非常感谢任何形式的帮助!
答案 0 :(得分:1)
自己想一想,也许不是最理想的解决方案,但如果有人有更好的想法,我乐意接受就是答案。
-(void)searchButtonDidTap:(UIButton*)aButton
{
if (!_searchController){
_searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
_searchController.searchResultsUpdater = self;
[_searchController.searchBar sizeToFit];
_tableView.tableHeaderView = _searchController.searchBar;
_searchController.delegate = self;
_searchController.dimsBackgroundDuringPresentation = NO;
self.definesPresentationContext = YES;
_searchController.active = NO;
_searchController.searchResultsUpdater = self;
_searchController.dimsBackgroundDuringPresentation = NO;
self.definesPresentationContext = YES;
_tableView.tableHeaderView = _searchController.searchBar;
_searchController.searchBar.delegate = self;
}
else
{
_searchController.active = NO;
[_searchController removeFromParentViewController];
_searchController = nil;
_tableView.tableHeaderView = nil;
}
[_tableView reloadData];
}
答案 1 :(得分:0)
您可以通过多种方式执行此操作,但我会执行以下操作:
更新viewForHeaderInSection方法,仅在名为_showHeader的新类属性为true时显示标题:
if(_showHeader) {
// insert code for showing the header:
// return HeaderCell;
} else {
return nil;
}
当用户单击按钮显示标题时,设置一些变量并在tableView上调用reloadData:
_showHeader = YES;
[_tableView reloadData];