UITableViewController 中的 UISearchBar?

Posted

技术标签:

【中文标题】UITableViewController 中的 UISearchBar?【英文标题】:UISearchBar in UITableViewController? 【发布时间】:2010-11-14 17:35:04 【问题描述】:

我想将SearchBar 添加到我的TableView。我只是将UISearchBar 拖到IB 中UITableView 的标题上,然后它与我的UITableView 一起滚动。

我现在改为使用UITableViewController,当我在标题中拖动UISearchBarUITableViewController 提供的UITableView 中,它根本不显示。

有什么诀窍吗?

亲切的问候

【问题讨论】:

是的,有一个技巧。拖放时,小心地将鼠标悬停在要拖放的区域上。视图将改变大小。当大小与您的 tableview 的大小匹配时,放手。你找到了正确的位置。我知道这是一个迟到的回应,但也许它会对尝试这样做的人有所帮助。 【参考方案1】:

您可以通过编程方式完成

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;  

希望这会有所帮助。

【讨论】:

很好的解决方案。要添加搜索栏,我之前必须使用 UIViewController。现在有了我们的解决方案,我可以使用 UITableViewController。【参考方案2】:

我通过使用两个 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;

希望对您有所帮助。

【讨论】:

【参考方案3】:

每当我在笔尖中定义搜索栏时,我都不会故意将其添加到表格视图的标题中。相反,我将它设置在 viewDidLoad 函数中。 Retterdesdialogs 解决方案也有效,所以不知道为什么他没有获得更多选票。

- (void)viewDidLoad 

    [super viewDidLoad];
    tableView.tableHeaderView = searchBar;

【讨论】:

【参考方案4】:

它还取决于如何初始化 tableview 控制器,如果你通过 initWithNib:Bundle 方法分配和初始化它应该仍然显示。但是对于tableview控制器我认为默认的实现方法是initWithStyle。如果您使用 initWithStyle 进行分配和初始化,则 nib 文件将永远不会加载。

【讨论】:

【参考方案5】:

我刚刚尝试过,它对我有用,不应该有什么技巧。如果您想在某处发布项目的精炼版本,我可以帮助您查看。

【讨论】:

以上是关于UITableViewController 中的 UISearchBar?的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewController 中的 iAd

UITableViewController 中的 iOS tableHeaderView 从不显示

UITableViewController 中的顶栏背景

框架中的 UITableViewController 未调用 didSelectRowAtIndexPath

从 UITableViewController 中的按钮创建操作

在 UITableViewController 中的 UITableViewCells 之间进行通信