2016-11-01 2 views
0

가져온 결과 컨트롤러가 관리하는 테이블보기가 있습니다. 내가 원하는 것은 사용자가 분할 된 컨트롤을 탭할 때 정렬 순서를 변경하는 것입니다. 이 내가 가져온 결과 컨트롤러를 만드는 방법은 다음과 같습니다새로 고침 fetchedResultsController 데이터

- (NSFetchedResultsController *)frc { 

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

    NSString *sortCase; 
    switch (self.sortOrder) { 
     case tableSortServer: 
      sortCase = [NSString stringWithFormat:@"%@", CD_SORT]; 
      break; 

     case tableSortDate: 
      sortCase = [NSString stringWithFormat:@"%@", CD_DATE]; 
      break; 

     default: 
      sortCase = [NSString stringWithFormat:@"%@", CD_SORT]; 
      break; 
    } 


    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription 
            entityForName:CD_ENTITY_NAME inManagedObjectContext:self.getManagedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] 
           initWithKey:sortCase ascending:NO]; 
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; 

    [fetchRequest setFetchBatchSize:BATCH_SIZE]; 

    NSFetchedResultsController *theFetchedResultsController = 
    [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
             managedObjectContext:self.getManagedObjectContext sectionNameKeyPath:nil 
                cacheName:@"Root"]; 
    self.frc = theFetchedResultsController; 
    _frc.delegate = self; 

    return _frc; 

} 

내가 한 세그먼트 컨트롤러 콜백 메소드에서을 :

그러나
- (IBAction)sortOrderChanged:(id)sender { 

    UISegmentedControl *sc = sender; 
    if (sc.selectedSegmentIndex == 0){ 
     self.sortOrder = tableSortServer; 
     [self.tableView reloadData]; 
    } else { 
     self.sortOrder = tableSortDate; 
     [self.tableView reloadData]; 
    } 

} 

, 그 작동하지. 그 일을 성취하는 방법? (다른 정렬 순서로 테이블을 다시로드하십시오)?

답변

1

아마이 테이블을 다시로드 때문에

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

이다. 이전 페치 결과 컨트롤러를 사용합니다. 따라서 귀하의 self.sortOrder = tableSortServer은 고려되지 않았습니다. 난 당신이 테이블 정렬을 새로로드하기 전에 매번 새로운 정렬 설명자를 설정해야한다고 생각한다.

+0

나는 비슷한 설정을 가지고 있으며, @Andrey가 말했듯이 정렬 키가 바뀔 때마다 새로운 'FRC'가 필요할 것이다. –