我创建了一个包含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
}
}
}
但是当我按下编辑按钮时,它会在两个部分显示删除按钮,如何防止这种情况并在第一部分进行删除???
答案 0 :(得分:1)
'UITableViewCellEditingStyleNone'可以为你已经实现的委托中的特定部分设置。只需返回它。
您可以使用以下代码实现: -
在cellForRowAtIndexPath中: -
if(indexPath.section==0)
{
cell.editing=NO;
}
答案 1 :(得分:1)
dataSource
可以实现tableView:canEditRowAtIndexPath:
以返回YES或NO。
答案 2 :(得分:1)
试试这个......
-(UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == yourVariable) return UITableViewCellEditingStyleDelete;
else return UITableViewCellEditingStyleNone;
}
答案 3 :(得分:1)
您可以查看该特定部分: if(indexPath.section == editSection){
返回UITableViewCellEditingStyleDelete;
}
else{
返回UITableViewCellEditingStyleNone;
}