1

我想了解如何将 UISearchBar 添加到 TableViewController - 但不是添加到表视图标题。

在某些情况下滚动后,我的现有搜索栏消失了。我找到了使搜索栏“浮动”的方法,但在一些极端情况下,搜索栏在滚动后仍然消失。

谷歌搜索此问题后,我发现有些人已将搜索栏从表格视图标题中取出来处理此问题。如果您的表视图被添加到 UIViewController,这相对容易。但是如何将新视图(在本例中为搜索栏)添加到 TableViewController - 这不是 TableViewController 自动提供的表视图的子视图?

iPad 应用程序 iOS 6

-谢谢迈克 C。

4

2 回答 2

1

首先,使用故事板。将 UIView 对象添加到表头。然后,将您的 UISearchBar 放在 UIView 中。此外,您需要将表格视图控制器设置为搜索栏的代表。不要使用 scrollViewDidScroll 方法(或类似方法),而是将浮动代码放入 viewDidLayoutSubviews。这适用于所有情况。我还调用了bringToFront,因为我使用了自定义部分标题并且需要确保表格标题视图始终保持在顶部。最上面的 UIEdgeInset 是 tableHeaderView 的高度。

viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    CGRect frame=self.tableView.tableHeaderView.frame;
    frame.origin.y=self.tableView.contentOffset.y;
    if (frame.origin.y <= 0) {
        frame.origin.y=0;
        [self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];
    } else {
        [self.tableView setContentInset:UIEdgeInsetsMake(48.0, 0.0, 0.0, 0.0)];
    }
    [self.tableView.tableHeaderView setFrame:frame];
    [self.tableView bringSubviewToFront:self.tableView.tableHeaderView];
}
于 2013-02-12T16:37:03.323 回答
0

由于 Stackoverflow 或 Apple 开发者论坛都没有人回应,我从 Cocoaheads 爱达荷州分公司的 Ron Adams 那里得到了帮助。基本上,我最终将我的 UITableViewController 更改为 UIViewController 并手动添加 tableview 和搜索栏。有点额外的工作,但效果很好!

于 2012-12-18T19:05:48.233 回答