向下滚动tableView( Notes.app )时,搜索栏会固定在顶部,但是当您向上滚动tableView时,搜索栏会被隐藏。这就是我想要的。
查看滚动指示器,看起来UISearchBar是表滚动视图的子视图。但是,如果我将一个搜索栏添加到Interface Builder中的tableView,那么它总是像常规行一样滚动附加到tableView。
答案 0 :(得分:4)
在表格视图中,将空白透明UIView(searchBarPlaceholderView
)放入tableHeaderView插槽中,该插槽具有UISearchBar的尺寸。然后将UISearchBar(searchBar
)添加到顶级视图。
然后,在您的表视图委托中,添加
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGRect sbFrame = searchBar.frame;
sbFrame.origin.y = searchBarPlaceholderView.frame.origin.y - scrollView.contentOffset.y;
// it cannot move from the top of the screen
if (sbFrame.origin.y > 0) {
sbFrame.origin.y = 0;
}
searchBar.frame = sbFrame;
}
答案 1 :(得分:1)
这是默认行为。你只需要将表格放在表格的第一个标题中(我猜这是第0节)。
然而,我刚刚用UITableViewController创建了一个新的应用程序,通过Interface Builder,我将UISearchBar放在tableView的上方,它的行为就像Notes.app应用程序一样。
答案 2 :(得分:1)
将搜索栏添加到界面构建器中的表格视图中,就像正常一样(也就是说搜索栏应该是表格的子视图)。
然后在委托中实现此方法:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
UISearchBar *searchBar = self.searchDisplayController.searchBar;
if(scrollView.contentOffset.y <= 0) {
searchBar.frame = CGRectMake(0, scrollView.contentOffset.y, searchBar.frame.size.width, searchBar.frame.size.height);
}
}