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

可能是什麼回事?

由於

//編輯: 萬一它不是隱含的,所述UITableView的尺寸由NSLayoutConstraints定義,它完美地示出。問題在於UISearchBar未顯示。

回答

0

我的問題的解決方案是我在UITableView作爲子視圖添加self.view之後定義了UISearchController

只要我在[self.view addSubview:_tableView]之前移動代碼,一切都按預期工作。