我想在SearchBar
添加TableView
。我只是将UISearchBar
拖到IB中UITableView
的标题中,然后使用UITableView
滚动。
我现在改为使用UITableViewController
,当我在标题中拖动UISearchBar
时
随UITableView
提供的UITableViewController
,它根本不会显示。
有诀窍吗?
亲切的问候
答案 0 :(得分:19)
您可以通过编程方式执行此操作
UISearchBar *tempSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 0)];
self.searchBar = tempSearchBar;
[tempSearchBar release];
self.searchBar.delegate = self;
[self.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchBar;
希望这有帮助。
答案 1 :(得分:7)
我通过使用两个UITableViewDelegate协议方法来实现它-tableView:viewForHeaderInSection:和-tableView:heightForHeaderInSection:如下所示。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
if (section == 0) {
UISearchBar *tempSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 0)];
[tempSearchBar sizeToFit];
return tempSearchBar;
}
return [UIView new];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0) {
return 40.0f;
}
return 0.1f;
}
希望它有所帮助。
答案 2 :(得分:4)
每当我在笔尖中定义搜索栏时,我都不会故意将其添加到表格视图的标题中。相反,我在viewDidLoad函数中设置它。 Retterdesdialogs解决方案也有效,所以不确定为什么他没有更多的选票。
- (void)viewDidLoad
{
[super viewDidLoad];
tableView.tableHeaderView = searchBar;
}
答案 3 :(得分:1)
它还取决于如何初始化tableview控制器,如果你通过initWithNib分配和init:Bundle方法它仍然应该出现。但是使用tableview控制器我认为默认的实现方法是initWithStyle。如果使用initWithStyle分配了init和init,那么nib文件永远不会加载。
答案 4 :(得分:0)
我只是尝试过它并且对我有用,应该不会有诡计。如果您想在某个地方发布项目的精炼版本,我可以帮助您查看。