我正在尝试使用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个原型单元格,一个用于常规内容,另一个用于表示插入行,两者都有相应的重用标识符。