Are the keys of the IndexTitlesForTableView section disabled?

I performed a section index for my view in a table. It returns the correct letters for what is stored in coredata ( ABCDFGHIKMNOPQRSTUVW ). However, indexes are disabled.

If I click on the letter M , it takes me to the letter I, etc. The name of the index I'm trying to sort is name

What should I do to fix the index?

I also implement numberOfSectionsInTableView , numberOfRowsInSection and titeForHeaderInSection . Section titles are displayed correctly.

 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { NSArray * sectionTitlesArray = [fetchedResultsController sectionIndexTitles]; NSMutableArray *newTitles = [[NSMutableArray alloc] init]; for (NSString *state in sectionTitlesArray) { [newTitles addObject:[NSString stringWithFormat:@"%@", state]]; } return [newTitles autorelease]; } 

Including FRC just in case it matters:

 - (NSFetchedResultsController *)fetchedResultsController { if (fetchedResultsController == nil) { NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"WidgetCoItems" inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity]; NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"state" ascending:YES]; NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1,sortDescriptor2, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"state" cacheName:nil]; aFetchedResultsController.delegate = self; self.fetchedResultsController = aFetchedResultsController; [aFetchedResultsController release]; [fetchRequest release]; [sortDescriptor1 release]; [sortDescriptor2 release]; [sortDescriptors release]; } return fetchedResultsController; } 
+1
source share
2 answers
 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { NSMutableArray *indices = [NSMutableArray array]; id <NSFetchedResultsSectionInfo> sectionInfo; for( sectionInfo in [fetchedResultsController sections] ) { [indices addObject:[sectionInfo name]]; } return indices; } - (NSString *)tableView:(UITableView *)aTableView titleForHeaderInSection:(NSInteger)section { return [[[fetchedResultsController sections] objectAtIndex:section] name]; } 

Try to implement this way.

+2
source
 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if ([[<#Fetched results controller#> sections] count] > 0) { id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section]; return [sectionInfo name]; } else return nil; } - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { return [<#Fetched results controller#> sectionIndexTitles]; } - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { return [<#Fetched results controller#> sectionForSectionIndexTitle:title atIndex:index]; } 
0
source

Source: https://habr.com/ru/post/903082/


All Articles