繁体   English   中英

UITeViewBtroller中的UISearchBar?

[英]UISearchBar in UITableViewController?

我想在我的TableView添加一个SearchBar 我只是将UISearchBar拖到IB中UITableView的标题中,然后用我的UITableView滚动。

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

有诀窍吗?

亲切的问候

你可以通过编程方式完成

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;  

希望这可以帮助。

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

希望能帮助到你。

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

- (void)viewDidLoad 
{
    [super viewDidLoad];
    tableView.tableHeaderView = searchBar;
}

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

我只是尝试了它,它对我有用,应该没有一招。 如果您想在某个地方发布项目的提炼版本,我可以帮助您查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM