在xib中添加UISearchBar作为tableHeaderView不起作用

One*_*iva 7 iphone objective-c uitableview uisearchbar

我加UISearchBar为tableHeaderView用于UITableView在厦门国际银行,通过只下降UISearchBarUITableView.当表有超过6行时,它工作正常.但是当少于6行时,它UITableView不会滚动.

同时,如果我UISearchBar使用以下语句以编程方式在.m文件中为UITableView 添加as tableHeaderView,一切工作都很精细.

tableViewTemp.tableHeaderView = searchBarFriends; 
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很奇怪,可能是什么问题?

请指教,谢谢.

jer*_*rts 2

这是我做的一个小技巧;)不要让你的 SearchBar 成为你的 UITableView 的子视图。只需将它们的实例添加到 nib 文件中,并将它们作为 UITableViewController 中的 IBOutlet 连接起来。然后您要做的是将 SearchBar 设置为表格的标题视图,这样您就不必担心框架重叠和干扰触摸事件。操作方法如下:

在 TableView 头文件中创建属性

@property ( nonatomic, retain ) IBOutlet UISearchBar *searchBar;
Run Code Online (Sandbox Code Playgroud)

设置表的标题视图:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return self.searchBar;  // The property you wired up in IB
}
Run Code Online (Sandbox Code Playgroud)

设置标题或 (UISearchBar) 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 44; // The height of the search bar
}
Run Code Online (Sandbox Code Playgroud)

这就是你所需要的。现在,如果您有分组的表视图或具有多个部分的表,这可能不是最好的解决方案,但它对于简单表来说是一个干净的解决方案。否则,您必须在代码中调整搜索栏和表格视图的框架,因为它们重叠,这就是您遇到触摸问题的原因。希望这可以帮助!