UISearchController скрывает результаты над строкой поиска

Я использую UISearchController внутри представления Container в UITableView. Я добавляю панель поиска следующим образом:

self.resultsTableController = [self.storyboard instantiateViewControllerWithIdentifier:NSStringFromClass([ResultViewController class])];

self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.resultsTableController];
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
self.searchController.searchResultsUpdater = self;
[self.searchController.searchBar sizeToFit];

self.searchController.hidesNavigationBarDuringPresentation = NO;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.resultsTableController.tableView.delegate = self;
self.searchController.delegate = self;
self.searchController.dimsBackgroundDuringPresentation = YES;
self.searchController.searchBar.delegate = self;
self.definesPresentationContext = NO;

См. следующие скриншоты. Он скрывает все результаты поиска, которые находятся над строкой поиска:

исходное изображение, когда панель поиска неактивна.SearchBar активен, и все вышеперечисленные элементы скрыты.

Пожалуйста, помогите мне, почему я получаю это?


person Umair Suraj    schedule 31.03.2015    source источник


Ответы (1)


Я обнаружил, что searchcontroller немного сложен. У меня было много проблем, и я обнаружил, что конкретный порядок имеет значение. Следующая комбинация - это то, что сработало для меня

        searchController.searchResultsUpdater = self
        searchController.searchBar.delegate = self
        searchController.dimsBackgroundDuringPresentation = false
        searchController.searchBar.placeholder = "search"
        searchController.searchBar.returnKeyType = .done
        searchController.searchBar.searchBarStyle = .minimal
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.searchBar.sizeToFit()
        definesPresentationContext = true
        if(tableView.tableHeaderView == nil){
            tableView.tableHeaderView = searchController.searchBar
        }

Вы можете иметь

searchController.hidesNavigationBarDuringPresentation = false
person Community    schedule 22.10.2019