use*_*360 3 objective-c uitableview
我有一个UITableView,它通过NSFetchedResultsController填充.当用户向右滑动项目时,我出现了删除按钮,以便他/她可以使用以下方法删除对象:
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
return YES;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//perform similar delete action as above but for one cell
XMPPUserCoreDataStorageObject *user = [[self fetchedResultsController] objectAtIndexPath:indexPath];
NSLog(@"User delete: %@", [user displayName]);
//delete from fetchController
NSArray *sections = [[self fetchedResultsController] sections];
int userStatus = [[user sectionNum] intValue];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,有一个例外,因为我没有更新我的fetchedResultsController模型.问题是如何使用commitEditingStyle中的indexPath从fetchedController中删除?
由于您正在使用NSFetchedResultsController您只需要从上下文中删除该对象,它将获取更改并为您删除行.
所以删除该deleteRowsAtIndexPaths:行并调用它:
[self.fetchedResultsController.managedObjectContext deleteObject:user];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |