滚动UITableView以使标题不可见

时间:2009-07-03 17:33:11

标签: iphone search uitableview scroll uisearchbar

我有一个带有UISearchBar的UITableView作为tableViews.tableHeaderView。就像3.0中的新Mail.app,Notes.app等。我想隐藏SearchBar,直到用户将视线拖到他的视线中。

我的尝试仅在tableView中有几个项目时才有效,因此tableView实际上想要滚动。我在loadView中调用它:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self._tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

然而,似乎Apple以不同的方式处理这种serachbar。拖出搜索栏后,它似乎不再与tablecells有关(在Notes.app中,而不是在Mail.app中)。

但也许Apple对于新的3.0行为有一个独特的方法,而我却找不到它?

6 个答案:

答案 0 :(得分:33)

也许你可以这样试试......

[self.tableView setContentOffset:CGPointMake(0,40)];

答案 1 :(得分:25)

也为我工作。我使用了以下内容:

[self.tableView setContentOffset:CGPointMake(0, self.searchDisplayController.searchBar.frame.size.height) animated:NO];

查询搜索栏的高度。

答案 2 :(得分:10)

这个让你获得与iPod.app完全相同的行为:

- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];

 CGFloat searchBarHeight = CGRectGetHeight([[[self searchDisplayController] searchBar] frame]);
 if ([[self tableView] contentOffset].y < searchBarHeight)
  [[self tableView] setContentOffset:CGPointMake(0, searchBarHeight)];
}

答案 3 :(得分:3)

这适合我。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.bounces = YES;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.tableView setContentOffset:CGPointMake(0, 44)];
}

答案 4 :(得分:0)

我必须先滚动到顶部,然后setContentOffset滚动到0,然后将显示searchBar:

self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
self.tableView.setContentOffset(CGPointMake(0, 0), animated: false)

答案 5 :(得分:-2)

我有点喜欢这样做:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    // Hide the table view header by default.
    NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:NO];
}

这样您就不必担心标题的高度。它只是有效!