在我的拆分视图应用程序中,无法将搜索栏添加到拆分视图的rootView
所以我在ui表视图的tableHeaderView中动态添加了搜索栏,如下所示
searchBar = [[UISearchBar alloc] init];
searchBar.frame=CGRectMake(0, self.tableView.frame.origin.y, self.tableView.frame.size.width, 44);
[searchBar sizeToFit];
self.tableView.tableHeaderView = searchBar;
向下滚动:iThe tableHeaderView也向下滚动,因此搜索栏也会滚动
当滚动顶部:tableHeaderView也滚动到顶部,因此搜索栏也会滚动
我实施了以下代码来解决此问题 this helps only when scrolls down
,但是当我们将表格视图滚动到上方时它再次以表格视图移动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGRect rect = self.tableView.tableHeaderView.frame;
rect.origin.y = MIN(0, self.tableView.contentOffset.y);
self.tableView.tableHeaderView.frame = rect;
}
我需要将viewHeaderView / Search栏始终放在视图的顶部
如何做到这一点
答案 0 :(得分:0)
将搜索栏放在单独的视图中,并将该视图放在表格视图上方。这意味着它保持不变。
答案 1 :(得分:0)
您可以使用tableView
单独添加tabBarmySearchBar = [[UISearchBar alloc] init];
[mySearchBar setHidden:NO];
mySearchBar.placeholder = @"Search item here";
mySearchBar.tintColor = [UIColor darkGrayColor];
mySearchBar.frame = CGRectMake(0, 0, 320, 44);
mySearchBar.delegate = self;
[mySearchBar sizeToFit];
[mySearchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[self.view addSubview:mySearchBar];
和tableView
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 44, 320, 436)];
[self.view addSubview:tableView];
如果你想添加xib,那么
答案 2 :(得分:-2)
我确信之前已经回答过,但假设您使用UITableViewController
,您可以将view
属性设置为您想要的任何内容。因此,一种方法是设置一个容器视图,顶部的搜索栏和它下面的表格,并使view
成为此容器。默认情况下,tableView
会返回view
,因此您需要处理的另一个细节是覆盖tableView
属性以返回实际的表格视图(您已存储在ivar中) )。代码可能如下所示:
@synthesize tableView = _tableView;
- (void)loadView
{
[super loadView];
_tableView = [super tableView];
// Container for both the table view and search bar
UIView *container = [[UIView alloc] initWithFrame:self.tableView.frame];
// Search bar
UIView *searchBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 50)];
// Reposition the table view below the search bar
CGRect tableViewFrame = container.bounds;
tableViewFrame.size.height = tableViewFrame.size.height - searchBar.frame.size.height;
tableViewFrame.origin.y = searchBar.frame.size.height + 1;
self.tableView.frame = tableViewFrame;
// Reorganize the view heirarchy
[self.tableView.superview addSubview:container];
[container addSubview:self.tableView];
[container addSubview:searchBar];
self.view = container;
}