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

7
我已经在xib中将 UISearchBar 添加为 UITableView 的 tableHeaderView,只需将 UISearchBar 拖放到 UITableView 上即可。当表格有超过6行时,它可以正常工作。但是,当行数小于6时,UITableView 无法滚动。
同时,如果我通过以下语句以程序方式将 UISearchBar 添加为 UITableView 的 tableHeaderView,在 .m 文件中,一切都能正常工作。
tableViewTemp.tableHeaderView = searchBarFriends; 

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

请给予建议,谢谢。

3个回答

2

我有一个小技巧 ;) 不要将搜索栏作为您UITableView的子视图。只需在nib文件中添加它们的实例,并在UITableViewController中将它们连接为IBOutlets。然后,您要做的是将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或者一个带有多个section的表格,那么这可能不是最好的解决方案,但对于简单的表格来说,这是一个干净的解决方案。否则,你需要在代码中调整搜索栏和表格视图的框架,因为它们重叠在一起,这就是你遇到触摸问题的原因。希望这能帮到你!


我在我的应用程序中使用过这个,应该能够完美运行。如果确实如此,请将其标记为已接受;) - jerrylroberts

1
如果您按照以下层次结构添加搜索栏,它将起作用。

enter image description here


我只是这样添加的,但当记录少于6条时,它会使UITableView无法滚动。 - OneDerr Siva
好的,谢谢Narayana,那可能是其他问题。我会检查我的代码。 - OneDerr Siva

0

我几乎遇到了同样的问题(对我来说,无论行数如何,它都无法滚动,但是一旦我删除搜索栏,它就可以滚动)。在viewDidLoad中添加以下内容解决了这个问题:

self.tableView.alwaysBounceVertical = YES;

谢谢pt2ph8,我也会尝试这个。 - OneDerr Siva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接