隐藏UISearchBar直到用户滚动?

时间:2012-12-24 05:57:12

标签: ios ios6 uisearchbar

我在表格视图的顶部实现了搜索栏和搜索显示控制器。

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

是否有一种简单的方法可以隐藏它,直到用户向下滚动,就像在音乐应用中发生一样?

6 个答案:

答案 0 :(得分:18)

您需要将搜索栏添加为表格视图的标题,然后在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 :(得分:12)

没有硬编码的另一种方法

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

答案 2 :(得分:7)

经过几个小时的拔毛,有效的方法

    iOS 9上的
  • 并不依赖于表格中的行数
  • 可变高度行

    考虑到搜索栏是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;
    
    }
    
    }
    

答案 3 :(得分:0)

适用于iOS 7并使用UINavigationController

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

答案 4 :(得分:0)

我在

中重新加载tableview的最佳方式
- (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];
    }
}

由于

答案 5 :(得分:0)

这适用于iOS9 +

 page_id/subscribed_apps?access_token=access_token