0

SplitViewControllerとCoreDataを使用しています。私のマスタービューは、SplitViewControllerテンプレートのような単純なTableViewです。私には次の3つの方法があります。

- (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のサブクラスにあります。他に足りないものはありますか?ありがとう!

4

1 に答える 1

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];
    }
}
于 2012-09-28T04:29:40.133 に答える