UISearchBar 不在 TableViewController 的表视图标题中?
Posted
技术标签:
【中文标题】UISearchBar 不在 TableViewController 的表视图标题中?【英文标题】:UISearchBar not in the TableViewController's table view header? 【发布时间】:2012-12-06 18:26:32 【问题描述】:我想了解如何将 UISearchBar 添加到 TableViewController - 但不是添加到表视图标题。
我的现有搜索栏在某些情况下滚动后消失时遇到问题。我找到了使搜索栏“浮动”的方法,但在一些极端情况下,搜索栏在滚动后仍然消失。
在谷歌搜索这个问题后,我发现有些人已经将搜索栏从表格视图标题中取出来处理这个问题。如果您的表视图被添加到 UIViewController,这相对容易。但是如何将新视图(在本例中为搜索栏)添加到 TableViewController - 这不是 TableViewController 自动提供的表视图的子视图?
iPad 应用 ios 6
-谢谢 迈克 C.
【问题讨论】:
【参考方案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];
【讨论】:
【参考方案2】:由于 *** 或 Apple 开发者论坛都没有人回复,我从 Cocoaheads 爱达荷州分公司的 Ron Adams 那里得到了帮助。基本上,我最终将我的 UITableViewController 更改为 UIViewController 并手动添加了 tableview 和搜索栏。有点额外的工作,但效果很好!
【讨论】:
我有同样的问题(我正在使用 UITableViewController )。我将 searchBar 添加为 tableHeaderView ,它没有出现在 ios5 中。我会试试你的建议。但是你能告诉我这两种实现的主要区别是什么吗?以上是关于UISearchBar 不在 TableViewController 的表视图标题中?的主要内容,如果未能解决你的问题,请参考以下文章
UISearchBar 不在 TableViewController 的表视图标题中?
将 UISearchBar 放在 tableview 上方但不在 tableview 或导航栏中