ios - 将搜索栏添加到 UITableView 的顶部

标签 ios objective-c uitableview search uitextfield

我有一个 UITableView,目前正在努力在顶部添加一个自定义搜索栏,该搜索栏由一个 UIView 组成,其中包含一个 UITextField。作为 iOS 应用程序的标准,搜索栏应该只在表格 View 滚动到顶部时可见——向下滚动时它应该与其他单元格一起从屏幕上消失。

但是,我想不出实现这种效果的方法。如果我将搜索栏放在表格 View 的顶部,它将覆盖其下方的单元格。如果我将它放在表格 View 上方 50 像素处,用户将无法选择它,因为当用户从屏幕上松开手指时它会自动消失。

谁能告诉我如何实现这种效果?

最佳答案

通常,您只需将 UISearchBar 用作表格 View 的 tableViewHeader。如果你想在用户进入屏幕时隐藏它(就像在大多数 native 应用程序中所做的那样),你可以为 viewWillAppear 中的 tableView 设置 contentOffset >.
我很确定他们实际上就是这样做的。如果您仔细想想,这就是 tableHeaderView 的用途。

尝试这样的事情:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0., 0., 320., 44.)];
    self.tableView.tableHeaderView = searchBar;
}

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

    CGPoint contentOffset = self.tableView.contentOffset;
    contentOffset.y += CGRectGetHeight(self.tableView.tableHeaderView.frame);
    self.tableView.contentOffset = contentOffset;
}

请注意,在 iOS 7 中,您不应该只将 tableViewcontentOffset 设置为 CGPointMake(0., CGRectGetHeight(self.tableView.tableHeaderView.frame )) 如果您的 viewControllerautomaticallyAdjustsScrollViewInsets 设置为 YES,因为它可能不会是 CGPointZeroviewWillAppear:

关于ios - 将搜索栏添加到 UITableView 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869649/

相关文章:

objective-c - 开发证书和分发证书的区别

ios - iOS 8 Bluetooth LE Central无法写入特征2A06的值

iphone - UISearch 不显示结果

ios - 在不为后退滑动按钮设置动画的情况下呈现警报

ios - UITableViewCell contentView 中的自动布局

ios - HTML5 视频时长问题

ios - Objective-C 系统宏中的下划线命名约定

iOS TableView 点击事件不起作用

android - 我可以使用 Android studio Avd 管理器在 Windows 上运行 iOS 模拟器吗?

ios - Google Analytics SDK 3 iOS - Google 的示例不起作用?