iOS/Obj-C - 在View Controller的一个tableview中实现UITableViewCellEditingStyleDelete?

iOS/Obj-C - 在View Controller的一个tableview中实现UITableViewCellEditingStyleDelete?

问题描述:

我有一个视图控制器内的三个tableview(他们的能见度是由一个段控制)。也就是说,我只希望单元格可以选择从self.friendsView中删除,而不是其他的表格。在我的View Controller中我有下面的代码,但是在我所有的三个tableviews中都可以看到滑动和删除单元格的能力,而不仅仅是self.friendsView。我怎样才能解决这个问题?iOS/Obj-C - 在View Controller的一个tableview中实现UITableViewCellEditingStyleDelete?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (tableView == self.friendsView) { 
     if (editingStyle == UITableViewCellEditingStyleDelete) { 
      // Delete the row from the data source 

      NSMutableDictionary *nodeData = [[self.myFriendData objectAtIndex:indexPath.row] mutableCopy]; 

      NSString *nid = [nodeData objectForKey:@"nid"]; 
      [nodeData setObject:nid forKey:@"nid"]; 
      NSLog(@"%@",nid); 

      [self.myFriendData removeObjectAtIndex:indexPath.row]; 

      [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 



      [DIOSNode nodeDelete:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) { 
       NSLog(@"node deleted!"); 
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
       NSLog(@"could not delete node!"); 
      }]; 
     } 
    } 
} 
+0

不是你的问题的直接答案,但为什么你有三个表视图时,只有一个是可见的?只有一个表格视图。当用户选择不同的片段时,您将重新加载一个表格视图。您的数据源方法会根据选定的段返回适当的数据。远比三个单独的表视图更高效,并且必须根据需要隐藏/显示它们。 – rmaddy

除了实现commitEditingStyle还需要实现editingStyleForRowAtIndexPath委托方法。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == self.friendsView) { 
     return UITableViewCellEditingStyleDelete; 
    } else { 
     return UITableViewCellEditingStyleNone; 
    } 
}