搜索结果在状态栏下方可见地滚动

时间:2014-11-24 19:38:58

标签: ios uitableview uiscrollview uinavigationbar uisearchbar

通过UISearchBar对数据集进行搜索时,搜索结果会成功显示在UITableViewController UITableView中。但是,当向下滚动搜索结果时,UITableView的行会明显显示在UINavigationBar和模拟器的状态栏下方。

Scrolling through search results

这显然不是我想要的样子。理想情况下,我希望UISearchBar充当UITableView标题,所有搜索结果都包含在UISearchBar范围按钮下方,但我的尝试没有成功。

以下是相关UITableViewController及其UITableView属性的故事板设置。

Search results table view controller and its table view's properties

以下是我用来设置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的半透明时, UISearchBarUINavigationBar一起滑出视图。

Search bar disappears

另请注意,我没有在Storyboard中实现UISearchBar(但是,如果我无法使当前的设置正常工作,我可能会采取这种方式。)

1 个答案:

答案 0 :(得分:4)

经过几次面掌之后,这一切都归结为缺乏这一行代码:

self.definesPresentationContext = YES;

将演示文稿上下文设置为YES表示视图控制器显示UISearchController时应覆盖视图控制器的视图。