NSFetchedResultsController を使用して Core Data を操作する UITableView を取得しようとしていますが、UITableViewCellStyleInsert
編集中に最後の行として挿入コントロール ( ) も使用します。
挿入コントロールは単なる別の tableviewcell であり、編集スタイルが異なるだけなので、適切な UITableViewDatasource デリゲート メソッドを次のように変更しました。
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([self isInsertionControl:indexPath]) {
return UITableViewCellEditingStyleInsert;
} else {
return UITableViewCellEditingStyleDelete;
}
}
報告された行数も、編集時にそれに応じて更新する必要があります (現時点ではセクションが 1 つしかないと仮定します)。
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
id<NSFetchedResultsSectionInfo> sectionInfo = self.fetchedResultsController.sections[section];
NSUInteger numberOfObjects = sectionInfo.numberOfObjects;
// FIXME, things will go out of hand with more than one section.
if (self.tableView.editing) {
return numberOfObjects + 1;
} else {
return numberOfObjects;
}
}
要求された場合は、挿入行の適切なセルを返します。
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *tableViewCell = nil;
if ([self isInsertionControl:indexPath]) {
static NSString *InsertIdentifier = @"InsertCell";
tableViewCell = [tableView dequeueReusableCellWithIdentifier:InsertIdentifier
forIndexPath:indexPath];
} else {
tableViewCell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier
forIndexPath:indexPath];
[self configureCell:tableViewCell atIndexPath:indexPath];
}
return tableViewCell;
}
これは機能しません。誰かが理由を見つけるのを手伝ってくれますか?
クイック編集
明確にするために、ストーリーボードに 2 つのプロトタイプ セルを用意しています。