2012-12-24 27 views
10

我在我的表格视图顶部实现了一个搜索栏和搜索显示控制器。隐藏UISearchBar直到用户滚动?

当视图加载搜索栏并且相对范围始终可见时。

有没有简单的方法来隐藏它,直到用户向下滚动,就像它发生在音乐应用程序中一样?

回答

17

您需要添加搜索栏为表视图的标题,然后设置表视图的contentoffset财产viewDidLoad如,

[self.tableView setContentOffset:CGPointMake(0,44) animated:YES];//or (0, 88) depends on the height of it 

对于搜索显示控制器,你可以试试这个为好,

[self.searchDisplayController setActive:NO animated:YES]; 
+1

设置内容精抵消工作正常,谢谢! – kain

+3

当表格中的所有行适合屏幕时,解决方案不会隐藏搜索栏。这种情况下的任何已知解决方法? – Zorayr

+0

@Zorayr:你是否找到了适用于整个屏幕的表格的工作解决方案?有同样的问题。 –

11

没有硬编码

[self.tableView setContentOffset:CGPointMake(0.0, self.tableView.tableHeaderView.frame.size.height) animated:YES]; 
+0

这完美的作品。令人敬畏的工作codercat! –

0

另一种方法为iOS的7并使用UINavigationController

[self.tableView setContentOffset:CGPointMake(0, self.searchBar.height + self.navigationController.navigationBar.height)]; 
0

最好的方法,我没有在

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:YES];  
    [self performSelector:@selector(reload:) withObject:nil afterDelay:0.0]; 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
} 

- (void)reload:(__unused id)sender { 
     [self.searchDisplayController setActive:YES]; 
     [self.tableView reloadData]; 
     [self.refreshControl endRefreshing]; 
    } else { 
     [self.refreshControl endRefreshing]; 
     [[[UIAlertView alloc]initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show]; 
    } 
} 

感谢

7

的头发拉了几个小时后重装tableview中,一些在iOS工作

  • 不依赖于在表
  • 与可变高度的行

    考虑到搜索栏的行数是tableView.tableHeaderView

    @interface MyTableViewController() 
    
    @property (nonatomic, assign) BOOL firstLayout; 
    
    @end 
    
    - (void) viewDidLoad { 
    [super viewDidLoad]; 
    
    
    self.firstLayout = YES; 
    //your code 
    
    } 
    
    -(void)viewDidLayoutSubviews{ 
    
    [super viewDidLayoutSubviews]; 
    
    if(self.firstLayout){ 
    CGPoint offset = CGPointMake(0, self.tableView.tableHeaderView.frame.size.height - self.tableView.contentInset.top); 
    [self.tableView setContentOffset:offset]; 
    
        self.firstLayout = NO; 
    
    } 
    
    } 
    
+0

彻底性+1。 – Jake

0

这部作品iOS9 +

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     self.tableView.contentOffset = CGPointMake(0, -20); 
    }); 
}