1

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

我仍然在掌握编程和目标 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;
}

还是不能防止第一行被删除

4

3 回答 3

4

您需要实现该方法UITableViewDataSourcetableView:canEditRowAtIndexPath:返回NO.indexPath.row 0

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return indexPath.row > 0;
}
于 2013-01-04T15:04:45.860 回答
2

尝试将您的代码移动到 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

于 2013-01-04T15:04:38.420 回答
0

试试这个代码: -

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

    }

它一定会帮助你

于 2013-06-12T11:44:04.997 回答