テーブルでセクションと行を機能させるために文字通り数週間を費やし、ついにそれを実行しました! 次に、表示するデータがたくさんあるにも関わらず、画面に最初に表示されたものを下にスクロールできないことに気付きました。また、スクロール バーが通常より太く、右上隅に数字の 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" を変更すると、日付とセクションが削除され、1 つのセクションが残り、スクロールが正常に機能します。@"addDate" を残すと、セクションで必要なことが行われますが、その 2 と「太い」スクロールでスクロールしない理由がわかりません。
EDIT2:私は自分の問題を見つけました...別の教育コースからコードを借りて CoreDataTableViewController を機能させ、sectionIndexTitlesForTableView を実装していました。コメントアウトして動作中です!