使用 UISearchDisplayController displaysSearchBarInNavigationBar 时导航栏项目消失

Navigation bar items disappear when using UISearchDisplayController displaysSearchBarInNavigationBar

如何将搜索栏嵌入导航栏项目?

我使用了 [searchBar sizeToFit] 但它没有用,而且没有使用 displaysSearchBarInNavigationBar 单击搜索栏时导航栏消失了。

我在 UISearchDisplayController 中尝试了答案 UISearchDisplayController hiding navigation bar

-(void)viewDidLayoutSubviews{
[self.navigationController setNavigationBarHidden:NO animated:NO];
}

但这会导致 UISearchDisplayController searchResultsTableView 在隐藏搜索栏的同时显示在导航栏下方。

我尝试使用以下方法修改 resultsTableView 框架尺寸,同时导航栏中没有搜索栏,即 self.searchDisplayController.displaysSearchBarInNavigationBar = NO,但这导致在编辑模式下取消时出现问题。这取自 Moving SearchBar table view

- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView{

    CGRect s = self.searchDisplayController.searchBar.frame;
    CGRect newFrame = CGRectMake(0,
                                 s.size.height,
                                 s.size.width,
                                 s.size.height*[filteredList count]);

    tableView.frame = newFrame;


}

然后我从 this 线程

中找到了更好的解决方案

并且仅在 viewDidLoad 中使用 [self.searchDisplayController.navigationItem setLeftBarButtonItem: self.sidebarButton] 它解决了我的问题。现在剩下的是如何根据内容设置 searchResultsTableView 框架大小,但这是另一个问题。 :)