我正在努力实施基本搜索栏。当表格滚动时,我无法弄清楚如何使搜索栏坚持到标题。这是我加载搜索栏的代码:
-(void)loadbar{
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchDisplayController.delegate = self;
searchDisplayController.searchResultsDataSource = self;
self.tableView.tableHeaderView = searchBar;
}
搜索栏继承自UISearchBar,searchDisplayController继承自UISearchDisplayController
谢谢!
答案 0 :(得分:2)
表格的标题视图随表格滚动。如果您不希望搜索栏按表格视图滚动,则无法将搜索栏设置为标题视图。
您有三种选择。
scrollViewDidScroll:
委托方法,并在表格滚动时调整滚动条的位置。UITableViewController
。使用UIViewController
并添加自己的表格视图。添加搜索栏顶部的搜索栏和搜索栏下方的表格视图。答案 1 :(得分:0)
使用单节表格视图并将搜索栏设置为节标题。
在此之前,iOS能够识别表格视图标题中何时存在搜索栏。在这种情况下,搜索栏将隐藏在导航栏下方,并且可以向下滚动以显示出来。使用时,搜索栏固定在窗口顶部,而不滚动表格视图内容。从最近开始,这种行为就被打破了:搜索栏随单元格滚动。
在提出的解决方案中,我们将搜索栏设置为节标题。在我们滚动经过该节的末尾之前,该节的标题一直保持可见。因此,如果我们只有一个部分,则搜索栏总是可见的。
// Class members
UISearchBar *searchBar;
- (void)viewDidLoad {
// Inherited
[super viewDidLoad];
// Search Bar
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchBar.delegate = self;
searchBar.barStyle = UISearchBarStyleMinimal;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// It is mandatory to have one section, otherwise the search bar will scroll
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// TODO: Return the number of elements in the table
return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return searchBar.frame.size.height;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return searchBar;
}