objective-c - 防止在 TableView 中删除第一行

标签 objective-c ios cocoa-touch uitableview

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

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

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

最佳答案

您需要执行 UITableViewDataSource 方法tableView:canEditRowAtIndexPath:并返回 NO对于indexPath.row 0 .

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

关于objective-c - 防止在 TableView 中删除第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159527/

相关文章:

iphone - 在 objective-c 中生成唯一的ID

ios - 如何将类对象添加到 NSMutableArray?

objective-c - Yosemite Finder Sync 简单示例

ios - 如何在ARC中释放NSMutableArray保存的数据

ios - 如何从 adf 移动应用程序中删除红色感叹号?

ios - UITableView 和 UICollectionView 上的 Swift didSelectRowAt 不起作用

iphone - 显示临时 subview

ios - 以编程方式实例化 TableViewController 子类后,其导出为零

objective-c - 将来自Web服务的大量数据分块写入文件

cocoa-touch - ViewController.h 和 ViewController.m 前缀