在 xib 中将 UISearchBar 添加为 tableHeaderView 不起作用
Posted
技术标签:
【中文标题】在 xib 中将 UISearchBar 添加为 tableHeaderView 不起作用【英文标题】:Adding UISearchBar as tableHeaderView in xib not works 【发布时间】:2011-10-01 07:54:22 【问题描述】:我将UISearchBar
添加为xib 中UITableView
的tableHeaderView,只需将UISearchBar
放到UITableView
上。
当表格超过 6 行时,它工作正常。
但是当行数少于 6 时,UITableView
不会滚动。
同时,如果我使用以下语句在 .m 文件中以编程方式将 UISearchBar
添加为 UITableView 的 tableHeaderView,一切正常。
tableViewTemp.tableHeaderView = searchBarFriends;
对我来说似乎很奇怪, 可能是什么问题?
请指教,谢谢。
【问题讨论】:
【参考方案1】:这是我做的一个小技巧 ;) 不要让 SearchBar 成为 UITableView 的子视图。只需在您的 nib 文件中添加它们的实例,并将它们作为 IBOutlets 连接到您的 UITableViewController 中。然后您要做的是将 SearchBar 设置为表格的标题视图,这样您就不必担心帧重叠和干扰触摸事件。以下是你的做法:
在 TableView 头文件中创建属性
@property ( nonatomic, retain ) IBOutlet UISearchBar *searchBar;
为您的表格设置标题视图:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
return self.searchBar; // The property you wired up in IB
设置标题或 (UISearchBar) 的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
return 44; // The height of the search bar
这就是你所需要的。现在,如果您有一个分组的 tableview 或一个包含多个部分的表格,这可能不是最好的解决方案,但它对于一个简单的表格来说是一个干净的解决方案。否则,您必须在代码中调整搜索栏和表格视图的框架,因为它们重叠,这就是您遇到触摸问题的原因。希望这会有所帮助!
【讨论】:
谢谢你,杰瑞,我会试试的。 我在我的应用程序中使用过它,应该像一个魅力一样工作。如果确实如此,请将其标记为已接受;)【参考方案2】:如果您添加如下层次结构的搜索栏,它将起作用
【讨论】:
我只添加了这样的好友,但是当少于 6 条记录时,它使 UITableView 无法滚动。 好的,谢谢 Narayana,所以可能是其他问题。我会检查我的代码。【参考方案3】:我遇到了几乎相同的问题(对我来说,它根本不会滚动任何数量的行,但只要我删除了搜索栏,它就会滚动)。修复它在viewDidLoad
中添加这个:
self.tableView.alwaysBounceVertical = YES;
【讨论】:
谢谢 pt2ph8,我也试试这个。以上是关于在 xib 中将 UISearchBar 添加为 tableHeaderView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS7 中将搜索栏与导航栏结合时 UISearchbar 空间为空?
如何将 UISearchBar 添加到同一 UIViewController 中的两个 TableView