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