- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
正如您在帖子中指出的那样,如果您的搜索处于活动状态,则必须返回 nil 。然后,覆盖 中的两个方法UISearchDisplayDelegate
以刷新索引。
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
[self.tableView reloadSectionIndexTitles];
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
[self.tableView reloadSectionIndexTitles];
}
对于sectionIndexTitlesForTableView
方法,我更喜欢使用:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
if (self.searchDisplayController.active) {
return nil;
} else {
//Add @"{search}", to beginning to add search icon to top of index
return @[@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", @"#"];
}
}
注意:我发现你必须self.searchDisplayController.active
在 if 条件下使用。如果您使用tableView != self.tableView
.