2

У меня возникают проблемы, реализующий UISearchControllerПроблема реализации UISearchController

У меня есть UIViewController, который содержит UITableView и несколько кнопок, которые ниже в виде таблицы.

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    ... 
    _searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    _searchController.searchResultsUpdater = self; 
    _searchController.dimsBackgroundDuringPresentation = NO; 
    _searchController.searchBar.scopeButtonTitles = @[]; 
    _searchController.searchBar.delegate = self; 
    NSLog(@"tableViewHeader %@", NSStringFromCGRect(_tableView.tableHeaderView.frame)); 
    NSLog(@"searchBar  %@", NSStringFromCGRect(_searchController.searchBar.frame)); 
    _tableView.tableHeaderView = _searchController.searchBar; 
    ... 
} 

NSLog возвращает:

tableViewHeader {{0, 0}, {0, 0}} 
searchBar  {{0, 0}, {320, 44}} 

В общем, я не могу показаться, чтобы получить tableViewHeader быть видимым. Так как я не использую раскадровку, я создать экземпляр UITableView следующим образом:

_tableView = [[UITableView alloc] init]; 
_tableView.delegate = self; 
_tableView.dataSource = self; 
_tableView.separatorInset = UIEdgeInsetsZero; 
_tableView.layoutMargins = UIEdgeInsetsZero; 
_tableView.backgroundColor = [UIElementsStyleKit tableCellBackground]; 

[self.view addSubview:_tableView]; 

Что может быть неправильно?

Благодаря

// EDIT: Только в случае, если это не подразумевалось, Размеры UITableView «s определяются NSLayoutConstraints и она показывает отлично. Проблема в том, что UISearchBar не отображается.

ответ

0

Решение моей проблемы состояло в том, что я определил UISearchController после добавления UITableView в качестве подзадачи в self.view.

Как только я переместил код до [self.view addSubview:_tableView], все сработало, как ожидалось.