如何从表视图中删除单元格?
问题描述:
我在我的导航栏中有一个编辑按钮,并且我有一个表格视图。如何从表视图中删除单元格?
我的编辑按钮调用一个-editAction方法。
然后,我有这段代码来删除一个单元格,但我不知道如何使编辑按钮来调用这个代码......或编辑按钮如何让表格视图显示那些红色删除圈子的每一个细胞,然后触发此:
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object at the given index path
NSManagedObject *eventToDelete = [eventsArray objectAtIndex:indexPath.row];
[managedObjectContext deleteObject:eventToDelete];
// Update Event objects array and table view
[eventsArray removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
// Commit the change
NSError *error;
if (![managedObjectContext save:&error]) {
// Handle the error
}
}
}
答
按照UITableView
类参考文档,代码:
tableView.editing = YES;
应该把表进入编辑模式,并显示那些红色删除圈子。然后,当用户删除一个单元格时,应调用数据源方法。
您还可以使用[tableView setEditing:YES animated:YES];
的动画效果
答
在您的视图控制器的-viewDidLoad方法添加编辑按钮:
self.navigationItem.rightBarButtonItem = self.editButtonItem;
此按钮将切换控制器的编辑模式,将其发送-setEditing:动画:
editButtonItem从哪里来?在UITableView或UITableViewController中没有这样的属性,在整个示例代码中也没有定义editButtonItem。令人困惑... – openfrog 2010-01-15 12:30:35
它来自UIViewController的类别UIViewControllerEditing,请参阅UIViewController.h。 – Costique 2010-01-15 13:03:28
Costique,这看起来像一个很好的答案,但这是特定于UITableViewController?否则,不确定UITableView如何获取setEditing:animated:消息? OP不是关于视图控制器类的具体内容,这就是为什么我给出了我的答案,但如果是这样的话,你的答案会更可取。谢谢 – cidered 2010-01-15 13:34:56