4

2 つのセクションを含むテーブルを作成しました。編集ボタンを押したときに、2 番目のセクションではなく最初のセクションに削除ボタンを表示するアプリが必要です。次のコードを記述しました。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
Book_own *temp= (Book_own *)[self.books objectAtIndex:indexPath.row];

if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Delete the row from the data source

    [books removeObjectAtIndex:indexPath.row];

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

}

else if (editingStyle == UITableViewCellEditingStyleInsert) {
    // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}  
}
}

しかし、編集ボタンを押すと、両方のセクションに削除ボタンが表示されます。これを防ぎ、最初のセクションだけを削除するにはどうすればよいですか?

4

4 に答える 4

1

その特定のセクションを確認できます: if(indexPath.section == editSection){

UITableViewCellEditingStyleDelete を返します。

}

    else{

UITableViewCellEditingStyleNone を返します。

}

于 2012-05-19T13:59:15.493 に答える
1

「UITableViewCellEditingStyleNone」は、実装済みのデリゲートの特定のセクションに設定できます。それを返すだけです。

次のコードでそれを達成できます:-

cellForRowAtIndexPath で:-

if(indexPath.section==0)
{
cell.editing=NO;
}
于 2012-05-19T11:56:56.367 に答える
1

YES または NO を返すようにdataSource実装できます。tableView:canEditRowAtIndexPath:

于 2012-05-19T11:58:53.273 に答える
1

これを試して...

-(UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {

        if(indexPath.section == yourVariable) return UITableViewCellEditingStyleDelete;

        else return UITableViewCellEditingStyleNone;

    }
于 2012-05-19T12:00:11.407 に答える