防止在表视图中删除第一行

时间:2013-01-04 14:59:10

标签: objective-c ios cocoa-touch uitableview

我想停止用户从我的表视图中删除所有行,因此至少有一行始终存在。

我仍在努力掌握编程和目标c。

继承我尝试的内容:

  if (indexPath.section != 0 | editingStyle == UITableViewCellEditingStyleDelete) {
  [self.managedObjectContext deleteObject:[self.circuits objectAtIndex:indexPath.row]];
  [self.appDelegate saveContext];
  [self.circuits removeObjectAtIndex:indexPath.row];
  [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]             withRowAnimation:UITableViewRowAnimationFade];

然后

if (indexPath.section > 1 | editingStyle == UITableViewCellEditingStyleDelete) {
    [self.managedObjectContext deleteObject:[self.circuits objectAtIndex:indexPath.row]];
    [self.appDelegate saveContext];
    [self.circuits removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]             withRowAnimation:UITableViewRowAnimationFade];

这对我仍然可以删除第一行没有影响。所以我试过

- (BOOL)tableView:(UITableView *)commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) 
    return NO;

return YES;
}

仍然无法阻止第一行被删除

3 个答案:

答案 0 :(得分:4)

您需要实施UITableViewDataSource方法tableView:canEditRowAtIndexPath:并为NO indexPath.row返回0

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return indexPath.row > 0;
}

答案 1 :(得分:2)

尝试将代码移入  - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

答案 2 :(得分:0)

试试这段代码: -

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
    if(indexPath.row==0)
    return NO;
    else
    return YES;

    }

一定会帮到你