iOS7 searchDisplayController隐藏tableview索引

iOS7 searchDisplayController隐藏tableview索引,ios,ios7,tableview,Ios,Ios7,Tableview,有一个带有索引的tableview。它们在初始负载时可见 我还有一个searchDisplayController 当我使用searchDisplayController并取消它时,原始tableview上的索引突然被隐藏 我在iOS 6上从来没有遇到过这个问题 以下是我在iOS 6上使用的代码: - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView2 { if (self.searchDisplayCont

有一个带有索引的tableview。它们在初始负载时可见

我还有一个searchDisplayController

当我使用searchDisplayController并取消它时,原始tableview上的索引突然被隐藏

我在iOS 6上从来没有遇到过这个问题

以下是我在iOS 6上使用的代码:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView2 {

 if (self.searchDisplayController.active)
    return nil;

else
    return self.indices;
}
我试过这个,但运气不好:

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
    [self.tableViewOriginal reloadSectionIndexTitles];
}

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
    [self.tableViewOriginal reloadSectionIndexTitles];
}
更新:

要添加tableView,我使用故事板并将其与IBOutlet连接。在viewDidLoad中以编程方式添加searchBar和searchDisplayController:

  self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 290, 44)]; 
  self.searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
然后,我将搜索栏添加到表格单元格中,如果cellforrowatinexpath

 [cell addSubview:self.searchBar];

设置中的一个可能问题是将搜索栏放在表视图单元格中

一种更标准(也更简单)的方法是将搜索栏设置为表视图的
headerView

self.tableView.headerView = self.searchBar;

只需在设置搜索显示控制器后执行一次即可。

我有一个表视图,其中显示了表视图索引。我还使用了一个不显示索引的搜索显示控制器。当取消搜索时,主表的索引会很好地重新出现。这在iOS 6和iOS 7下。所以它通常工作得很好。所以你一定在做什么。使用有关如何设置搜索显示控制器和搜索栏的更多详细信息更新您的问题。完成设置搜索显示控制器的其余代码在哪里?你设置了它的代理吗?@maddy是的,我忽略了,因为我认为这不重要。我将代理设置为self。我还将searchResultsDataSource设置为self。自我是视图控制器,它的宿主看起来很好。我唯一的另一个建议是改变搜索栏的显示方式。与其将其添加到表格单元格中,不如将搜索栏设置为表格视图的
headerView
。哇,将搜索栏放置在tableHeaderView中很有效!回答这个问题,这样我就可以接受了。2395个答案和8个问题?投票@rmaddy为版主!