使用UIRefreshControl和UISearchBar搜索结果

时间:2013-07-28 20:28:52

标签: tableview uisearchbar uisearchdisplaycontroller uirefreshcontrol tableheader

我正在尝试获取类似邮件应用的行为,其中有UISearchBar,您可以拉动以刷新搜索结果。目前,我在IB中连接了UISearchBar的搜索显示控制器,一切正常(我可以在主tableview时刷新,我可以搜索)。

但是当我搜索并尝试拉动以刷新搜索结果(如邮件应用程序)时,没有UIRefreshControl。请查看以下视频:

Screen Recording

我想我必须UISearchBar headerView tableView,但我无法引用UISearchBar,因为它是搜索显示控制器的出口IB。这是UIRefreshControl的代码:

    //Pull to Refresh
    refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(pullToRefresh)      
    forControlEvents:UIControlEventValueChanged];


    [self.carTableView addSubview:refreshControl];

我在-viewDidLoad包含UIViewController

tableView方法中使用上述代码

1 个答案:

答案 0 :(得分:0)

我通过创建另一个UIRefreshControl并在每次用户在搜索栏中输入我可以在UISearchDispayController中检测到的搜索文本时将其添加到- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView来解决问题。这是代码:

//in viewDidLoad
//Pull to refresh in the search
    searchRefreshControl = [[UIRefreshControl alloc] init];
    [searchRefreshControl addTarget:self action:@selector(pullToRefresh) forControlEvents:UIControlEventValueChanged];

然后:

//in - (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView

//add the refresh control to the search display controller tableview
    [self.searchDisplayController.searchResultsTableView addSubview:searchRefreshControl];