25

我有一个带有 UISearchBar 作为 tableViews.tableHeaderView 的 UITableView。就像 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。拖出搜索栏后,它似乎不再绑定到表格单元(在 Notes.app 中,而不是在 Mail.app 中)。

但也许 Apple 对新的 3.0 行为有一种独特的方法,而我就是找不到?

4

6 回答 6

33

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

[self.tableView setContentOffset:CGPointMake(0,40)];
于 2009-07-07T13:52:45.260 回答
25

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

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

查询搜索栏的高度。

于 2009-11-24T17:52:27.423 回答
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)];
}
于 2010-11-04T14:04:11.113 回答
3

这对我有用。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.bounces = YES;
}

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

    [self.tableView setContentOffset:CGPointMake(0, 44)];
}
于 2011-12-28T15:40:31.557 回答
0

我必须先滚动到顶部,然后再滚动setContentOffset0,然后 searchBar 将可见:

self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
self.tableView.setContentOffset(CGPointMake(0, 0), animated: false)
于 2015-10-06T16:49:52.800 回答
-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];
}

这样你就不必担心你的头部有多高。它只是工作!

于 2013-10-06T23:57:12.770 回答