搜索结果在状态栏下方明显滚动
Posted
技术标签:
【中文标题】搜索结果在状态栏下方明显滚动【英文标题】:Search Results Visibly Scrolling Underneath the Status Bar 【发布时间】:2014-11-24 19:38:57 【问题描述】:通过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
(但是,如果我无法让当前的设置正常工作,我可能会采用该方法)。
【问题讨论】:
尝试将导航栏设置为不透明。 self.navigationController.navigationBar.translucent = NO; @MikeWelsh 很好的建议。但是,当关闭UINavigationBar
的半透明时,UISearchBar
在选中时会滚出视图,因为它依赖于嵌入在 UINavigationBar
中。
这个 VC 是否嵌入在 UINavigationController 中?您如何介绍这个搜索 VC?
@MikeWelsh 是的,上面的 TVC 嵌入在 UINavigationController
中,目前,应用程序在启动时直接打开到 UINavigationController
,将上面的 TVC 作为第一个视图。
如果导航栏不是半透明的并且您没有将导航栏设置为隐藏 (self.navigationController.navigationBarHidden = NO;
),我认为它应该会出现...不太确定您的情况是怎么回事.您是否尝试过实现preferredStatusBarStyle
?
【参考方案1】:
经过几次掌心,都归结为缺少这行代码:
self.definesPresentationContext = YES;
将展示上下文设置为YES
表示当视图控制器展示UISearchController
时应该覆盖视图控制器的视图。
【讨论】:
一些额外的注释,你必须在呈现视图控制器中添加 self.definesPresentationContext = true 。对我来说,如果呈现视图控制器隐藏了它的状态栏,它就不起作用了,我必须让它在搜索结果视图控制器中可见以上是关于搜索结果在状态栏下方明显滚动的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UISplitViewController 的导航栏下方添加搜索栏?