通过UISearchBar
对数据集进行搜索时,搜索结果会成功显示在UITableViewController
UITableView
中。但是,当向下滚动搜索结果时,UITableView
的行会明显显示在UINavigationBar
和模拟器的状态栏下方。
这显然不是我想要的样子。理想情况下,我希望UISearchBar
充当UITableView
标题,所有搜索结果都包含在UISearchBar
范围按钮下方,但我的尝试没有成功。
以下是相关UITableViewController
及其UITableView
属性的故事板设置。
以下是我用来设置UISearchController
及其UISearchBar
的相关代码。
BallotTunesSearchTableViewController.h
@interface BallotTunesSearchTableViewController : UITableViewController <UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate>
BallotTunesSearchTableViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
self.appDelegate = [[UIApplication sharedApplication] delegate];
// Initialize the search controller
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
// Setup the search bar
self.searchController.searchBar.delegate = self;
self.searchController.searchBar.scopeButtonTitles = [NSMutableArray arrayWithObjects:SongScopeName, ArtistScopeName, AlbumScopeName, nil];
self.tableView.tableHeaderView = self.searchController.searchBar;
}
更新:请注意,UITableViewController
嵌入在UINavigationController
中,并且在将UINavigationBar
设置为NO
的半透明时, UISearchBar
与UINavigationBar
一起滑出视图。
另请注意,我没有在Storyboard中实现UISearchBar
(但是,如果我无法使当前的设置正常工作,我可能会采取这种方式。)
答案 0 :(得分:4)
经过几次面掌之后,这一切都归结为缺乏这一行代码:
self.definesPresentationContext = YES;
将演示文稿上下文设置为YES
表示视图控制器显示UISearchController
时应覆盖视图控制器的视图。