我有一个嵌入常规视图控制器(嵌入在导航控制器中)的表视图。
一般来说,tableView:numberOfRowsInSection:
,tableView:titleForHeaderInSection
和tableView:cellForRowAtIndexPath:
等调用方法运行正常,可以正常使用....
现在出现了显示部分的问题。出于某种奇怪的原因,方法运行时,方法numberOfSectionsInTableview:
不被看到。我通过插入NSLog
以及插入断点来测试这一点。在这种方法中没有任何东西被认可。在调用显示部分时(我通过NSFetchedResultsController
组织它),它只显示当前应显示的第一部分5(因为numberOfSectionsInTableview
不是必需的,默认为1。)< / p>
我认为这种情况正在发生,因为我的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];
}
答案 0 :(得分:2)
原来是numberOfSectionsInTableView中的大写,其中v没有大写。