2013-12-18 2 views
0

질문이 있습니다. 색인 및 섹션을 내 tableView에 추가하려면 어떻게해야합니까? 핵심 데이터를 사용하고 있습니다. 나는 이런 식으로 뭔가가 :UITableView 색인 및 섹션

- (NSFetchedResultsController *)fetchedResultsController { 

    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Team" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 
    [fetchRequest setFetchBatchSize:20]; 

    NSString *sectionKey = nil; 

    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"number" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 
    sectionKey = @"name"; 


    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:sectionKey cacheName:@"Team"]; 
    _fetchedResultsController.delegate = self; 

    return _fetchedResultsController; 
} 
+0

당신이 위의 게시 된 코드를 기반으로 수행하고자하는 것을 이해 할 수 없습니다? – ldindu

답변

0

귀하의 NSFetchedResultsController 그것의 개체와 섹션이를, 당신은 단지 객담 클래스에 테이블 뷰의 데이터 소스를 asign이가해야 할 일 :

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [[self.fetchedResultsController sections] count]; 
} 

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    if ([[self.fetchedResultsController sections] count] > 0) { 
     id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section]; 
     return [sectionInfo numberOfObjects]; 
    } else 
     return 0; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = <#Get the cell#>; 
    NSManagedObject *managedObject = [<#Fetched results controller#> objectAtIndexPath:indexPath]; 

    // Configure the cell with data from the managed object. 
    return cell; 

} 



- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    if ([[self.fetchedResultsController 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 [self.fetchedResultsController sectionForSectionIndexTitle:title atIndex:index]; 
} 

이 촬영됩니다 에서 :

NSFetchedResulstController Class Reference

+0

완벽하게 작동했습니다! 그러나 문제가 있습니다 ... 각 섹션의 제목은 이름의 첫 글자가 아니라 전체 이름입니다! 이 문제를 어떻게 해결할 수 있습니까? –

+0

titleForHeaderInSection 메서드를 변경하여 문자열의 첫 번째 문자 만 반환하십시오. 그것이 도움이된다면 대답을 받아 들여주세요! –

+0

도움을 주셔서 감사합니다. –