在我的应用中,我具有以下设置:

  • UIViewController
  • UITableView作为子视图
  • tableView具有UISearchController,搜索栏是表标题视图

    _tableView.tableHeaderView = _searchController.searchBar;

  • 我要实现的是:
  • 当此屏幕出现时,searchBar不存在
  • 点按某个按钮(例如,导航控制器向右按钮),搜索栏就会出现(也许是从顶部动画或其他内容)
  • 再次点击该按钮,搜索栏将隐藏

  • 当搜索栏未显示时,表格看起来好像从未出现过该栏(没有空的标题单元格或类似的内容)

    任何帮助都将受到高度赞赏!

    最佳答案

    我自己想了这个,也许不是最佳解决方案,但是如果有人有更好的主意,我会很乐意接受。

    -(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];
    }
    

    关于ios - 如何在UITableView中显示/隐藏UISearchController searchBar?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35324864/

    10-13 04:05