滚动UITableView以使标题不可见

Jen*_*ohl 25 iphone search scroll uitableview 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];
Run Code Online (Sandbox Code Playgroud)

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

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

小智 33

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

[self.tableView setContentOffset:CGPointMake(0,40)];
Run Code Online (Sandbox Code Playgroud)

  • 当行数小于屏幕上适合的总行数时不起作用.此方案的任何已知解决方法? (9认同)

pet*_*ert 25

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

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

查询搜索栏的高度.


小智 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)];
}
Run Code Online (Sandbox Code Playgroud)