iOS/Obj-C - 在视图控制器中的一个表视图上实现 UITableViewCellEditStyleDelete



我在一个视图控制器内有三个表视图(它们的可见性由段控件控制)。也就是说,我只希望单元格可以选择从self.friendsView中删除,而不是其他表视图。我的视图控制器中有以下代码,但是滑动和删除单元格的功能在我的所有三个表视图上都可见,而不仅仅是self.friendsView。我该如何解决这个问题?

 - (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!");
            }];
        }
    }
}

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

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

最新更新