我正在尝试使用 NSFetchedResultsController 让 UITableView 与 Core Data 一起使用,同时UITableViewCellStyleInsert
在编辑期间将插入控件 ( ) 作为最后一行。
由于插入控件只是另一个tableviewcell,只是编辑风格不同,所以我更改了相应的UITableViewDatasource委托方法,例如:
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([self isInsertionControl:indexPath]) {
return UITableViewCellEditingStyleInsert;
} else {
return UITableViewCellEditingStyleDelete;
}
}
在编辑时,报告的行数也应该相应地更新(假设现在只有一个部分):
(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 个原型单元格,一个用于常规内容,一个用于表示插入行,两者都具有适当的重用标识符。