1

我有一个嵌入在常规视图控制器中的表格视图(嵌入在导航控制器中。)

一般来说,调用tableView:numberOfRowsInSection:,tableView:titleForHeaderInSectiontableView:cellForRowAtIndexPath:工作正常的方法,它们被看到并正常运行....

现在出现了显示部分的问题。由于某种奇怪的原因,程序运行numberOfSectionsInTableview:没有看到该方法。我已经通过插入NSLog's 以及插入断点来对此进行测试。此方法内没有识别任何内容。当调用显示部分时(我正在组织它NSFetchedResultsController),它只显示当前应该显示 5 的第一部分(因为numberOfSectionsInTableview不是必需的,默认为 1。)

我认为这是因为我的 tableView 嵌入在视图控制器中,而不是它实际上是一个 tableview 控制器。但如果是这样的话,为什么我不需要为其他tableView:方法做任何特别的事情呢?据我所知,代码的 sectionInfo 部分(在 NSFetchedResultsController 内)设置正确,因为其他section方法正常工作(放入NSLog每个方法以确保调用该方法。)

非常感谢您在理解和/或纠正此问题方面提供的任何帮助!如果您需要有关我的代码的更多信息,请告诉我。

编辑

这是我使用的与该字段相关的所有代码:

- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController == nil) {

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ActiveList" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"category" ascending:YES];
    NSSortDescriptor *sortDescriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]];

    //[fetchRequest setSortDescriptors:@[ sortDescriptor1, sortDescriptor2 ]];

    // Only retrieves items where 'isActive' SQLite field is '1' or 'YES'
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isActive == %@", [NSNumber numberWithBool:YES]];
    [fetchRequest setPredicate:predicate];

    [fetchRequest setFetchBatchSize:20];

    fetchedResultsController = [[NSFetchedResultsController alloc]
                              initWithFetchRequest:fetchRequest
                              managedObjectContext:self.managedObjectContext
                              sectionNameKeyPath:@"category"
                              cacheName:@"ActiveLists"];


    fetchedResultsController.delegate = self;
}
return fetchedResultsController;
}

- (void)performFetch {

NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
    FATAL_CORE_DATA_ERROR(error);
    return;
}
}

- (void)viewDidLoad
{
[super viewDidLoad];


[self performFetch];

}

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

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
}
4

1 回答 1

2

结果是 numberOfSectionsInTableView 中的大写,其中 v 没有大写。

于 2013-02-16T07:00:16.703 回答