我花了数周时间试图让部分和行在我的表中工作,并最终做到了!接下来我注意到,即使我有大量数据要查看,我也无法向下滚动超过屏幕上第一次显示的内容。此外,滚动条似乎比平时更粗,右上角显示了一个数字 2。
不知道我做错了什么。有人可以引导我朝正确的方向轻推我吗?我无法捕捉到胖滚动条,但它肯定比它应该的要宽。
- (void)setupFetchedResultsController {
NSString *entityName = @"Regster";
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"addDate" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Regster" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
//[request setFetchBatchSize:2];
self.fetchedResultsController.delegate = nil;
[request setPropertiesToFetch:[NSArray arrayWithObjects:@"addDate", @"regType", nil]];
NSString *query = self.selectedAccounts.name;
request.predicate = [NSPredicate predicateWithFormat:@"inAccounts.name CONTAINS[cd] %@", query];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"addDate" cacheName:nil];
[self performFetch];
NSError *error = nil;
NSUInteger count = [_managedObjectContext countForFetchRequest:request error:&error];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self setupFetchedResultsController];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [[self.fetchedResultsController sections] count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Account Register";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
[self.tableView setScrollEnabled:YES];
NSDictionary *regtype = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [regtype objectForKey:@"regType"];
return cell;
}
EDIT1:更改 fetchedResultsController 的 sectionNameKeyPath 的 @"addDate" 会导致删除日期和部分,留下一个部分并且滚动工作正常。离开 @"addDate" 可以满足我对部分的要求,但我不明白为什么它不会随着 2 和“胖”滚动而滚动。
EDIT2:我发现了我的问题......我从另一个教学课程中借用了代码来让我的 CoreDataTableViewController 工作,并且它已经实现了 sectionIndexTitlesForTableView。已注释掉并且正在工作!