首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISearchBar不在TableViewController的表视图头中吗?

UISearchBar不在TableViewController的表视图头中吗?
EN

Stack Overflow用户
提问于 2012-12-07 02:26:33
回答 2查看 601关注 0票数 1

我想知道如何将UISearchBar添加到TableViewController中,而不是添加到表视图头中。

在某些情况下,我的现有搜索栏在滚动后会消失,我遇到了问题。我已经找到了让搜索栏“浮动”的方法,但在一些情况下,滚动后搜索栏仍然会消失。

在谷歌了这个问题后,我发现有些人已经把表视图标题中的搜索栏去掉了,以解决这个问题。如果您的表视图被添加到UIViewController中,这就相对容易了。但是,如何向不是TableViewController自动提供的表视图的子视图的TableViewController添加新视图(在本例中是搜索栏)呢?

iPad应用程序iOS 6

-Thanks Mike C.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-19 03:05:48

由于Stackoverflow和苹果开发者论坛都没有回应,我得到了Cocoahead爱达荷州分部的罗恩·亚当斯的帮助。基本上,我最终将UITableViewController更改为UIViewController,并手动添加了表视图和搜索栏。有点额外的工作,但它的效果很好!

票数 0
EN

Stack Overflow用户

发布于 2013-02-13 00:37:03

首先,使用故事板。将UIView对象添加到表头。然后,将您的UISearchBar放入UIView中。此外,您还需要将表视图控制器作为搜索栏的委托。将浮动代码放入viewDidLayoutSubviews中,而不是使用scrollViewDidScroll方法(或类似方法)。这在所有情况下都有效。我还调用了bringToFront,因为我使用了一个定制节标题,并且需要确保表头视图始终位于顶部。顶部的高度是tableHeaderView的高度。

代码语言:javascript
复制
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];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13750088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档