我花了几周的时间试图在我的桌子上找到各个部分和行,并最终做到了! 接下来我注意到即使我有足够的数据要查看,我也无法向下滚动屏幕上显示的内容。此外,滚动条似乎比平常更胖,右上角显示数字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。注释掉并且正在工作!
答案 0 :(得分:0)
很难看不到您的代码或了解数据是什么。但我可以帮助一点。
角落里的那个2是你的表格视图的部分索引列(也可能是胖滚动条的意思)。你有两个部分都以数字2开头。如果部分标题是单词,你会看到一个按字母顺序排列的索引。
索引只显示1个值的事实可能意味着您的表视图不会显示您期望的完整数据集,只显示屏幕上的2个部分。
也许会显示一些代码?即使只是设置代码可能会有所帮助。通常,CoreDataTableViewController需要NSFetchedResultsController,标题键等。显示一些代码可能会提供更多线索。
答案 1 :(得分:0)
我发现了我的问题...我从另一个教学课程中借用了代码来使我的CoreDataTableViewController工作,并且它实现了sectionIndexTitlesForTableView。做了一些大规模的搜索,发现这在某个地方长大了。注释掉了sectionIndexTitlesForTableView方法,它工作得很好!