2011-11-07 2 views
1

내 테이블 뷰에 대한 섹션 인덱스를 구현했습니다. coredata (A B C D F G H I K M N O P Q R S T U V W)에 저장된 문자에 대한 올바른 문자를 반환합니다. 그러나 색인은 꺼져 있습니다.sectionIndexTitlesForTableView 키가 꺼져 있습니까?

나는 그것이 I, 등 난에 정렬을 시도하고있는 인덱스의 이름이 나 인덱스를 해결하려면 어떻게 거기에 무엇 name

입니다 문자로 나를 걸리는 편지 M을 클릭하면?

numberOfSectionsInTableView, numberOfRowsInSectiontiteForHeaderInSection도 구현하고 있습니다. 섹션 헤더가 올바르게 표시됩니다. FRC 포함

- (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]; 
} 

는 경우는 관련이 :

- (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; 
} 
+0

'fetchedResultsController' 메소드를 호출하는 코드를 표시 할 수 있습니까? I.E. 선택한 행/선택된 섹션 메서드가 있습니까? –

+0

내가 틀렸을 수도 있지만 이해할 때 정의 된 메서드는 암시 적으로 FRC를로드합니다. 내가 볼 수있는 '전화'가 없습니다. (IE : viewDidLoad : loadTable :, etc) – roberthuttinger

답변

2
- (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]; 
} 

봅니다 이런 식으로 구현.

+0

확인 차이점을보고 내가 놓친 것을 볼 것입니다 ... – roberthuttinger

+0

그게 전부입니다. 몇 가지 비틀기를 추가해야하지만 지금은 차이가 있음을 알 수 있습니다 ... 감사합니다! – roberthuttinger

0
- (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]; 
} 
관련 문제