我在xib中添加了UISearchBar
作为UITableView
的tableHeaderView,只需将UISearchBar
放到UITableView
上即可。
当表有超过6行时,它工作正常。
但是当行数少于 6 时,UITableView
不会滚动。
同时,如果我使用以下语句以编程方式在.m文件中添加UISearchBar
作为UITableView的tableHeaderView,一切工作都很精细。
tableViewTemp.tableHeaderView = searchBarFriends;
对我来说似乎很奇怪, 可能是什么问题?
请指教,谢谢。
答案 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)
如果您添加类似于以下层次结构的搜索栏,它将起作用
答案 2 :(得分:0)
我遇到了几乎相同的问题(对我来说,根本不会滚动任意数量的行,但是只要我删除了搜索栏就会出现问题)。修正了在viewDidLoad
:
self.tableView.alwaysBounceVertical = YES;