我正在使用SplitViewController和Core Data。我的Master视图是一个简单的TableView,就像SplitViewController模板一样。我有这三种方法:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
[self saveContext];
}
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
我认为当我滑动行删除它时,这足以显示删除按钮。现在发生的事情是,如果你第一次刷它,只有第一次,删除按钮显示然后消失。如果我再次滑动,则没有任何反应。我需要重新启动模拟器才能再次显示它。在我的TableViewCell上,我有一个UILabel和一个UITextField。我想也许UITextField会拦截滑动,但我调整了它们的大小,所以它们只在左半边以防万一。
编辑:
所以我还没弄清楚为什么会这样。我想我会添加一个编辑按钮来测试tableView setEditing:甚至被调用。所以在我的行动方法中,我这样做:
- (IBAction)setEditMode:(id)sender {
[self.tableView setEditing:YES animated:YES];
}
此方法确实被调用,但tableView永远不会进入编辑模式。所有这些都在UITableViewController的子类中。还有别的东西我不见了吗?谢谢!
答案 0 :(得分:0)
试试这个,
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
if(editingStyle == UITableViewCellEditingStyleDelete) {
//Get the object to delete from the array.
Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:indexPath.row];
[appDelegate removeCoffee:coffeeObj];
//Delete the object from the table.
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}