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

时间:2011-10-01 07:54:23

标签: iphone objective-c uitableview uisearchbar

我在xib中添加了UISearchBar作为UITableView的tableHeaderView,只需将UISearchBar放到UITableView上即可。 当表有超过6行时,它工作正常。 但是当行数少于 6 时,UITableView不会滚动。

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

tableViewTemp.tableHeaderView = searchBarFriends; 

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

请指教,谢谢。

3 个答案:

答案 0 :(得分:2)

这是我做的一个小技巧;)不要让你的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或一个包含多个部分的表,但它是一个简单表的干净解决方案。否则,您必须在代码中调整搜索栏和tableview的框架,因为它们重叠,这就是您遇到触摸问题的原因。希望这有帮助!

答案 1 :(得分:1)

如果您添加类似于以下层次结构的搜索栏,它将起作用

enter image description here

答案 2 :(得分:0)

我遇到了几乎相同的问题(对我来说,根本不会滚动任意数量的行,但是只要我删除了搜索栏就会出现问题)。修正了在viewDidLoad

中添加此内容的问题
self.tableView.alwaysBounceVertical = YES;