Cell不允许删除它.滑动发生时,它会向后滑动,因此无法删除它.控制台中的消息说:
attempting to set a swipe to delete cell when we already have one.... that doesn't seem good
码:
#import "GroupDetailInfoViewController.h" #import "YFJLeftSwipeDeleteTableView.h" @interface GroupDetailInfoViewController () { NSMutableArray * _dataArray; UIButton * _deleteButton; NSIndexPath * _editingIndexPath; UISwipeGestureRecognizer * _leftGestureRecognizer; UISwipeGestureRecognizer * _rightGestureRecognizer; UITapGestureRecognizer * _tapGestureRecognizer; } @property (nonatomic,retain) YFJLeftSwipeDeleteTableView *tableView; @end @implementation GroupDetailInfoViewController - (id)init { self = [super init]; if (self) { // Custom initialization _dataArray = [@[@(1),@(2),@(3),@(4),@(5),@(6),@(7),@(8),@(9),@(10)] mutablecopy]; } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. CGRect frame = self.view.bounds; self.tableView = [[YFJLeftSwipeDeleteTableView alloc] initWithFrame:frame]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; [self.view addSubview:self.tableView]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return _dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static Nsstring *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.textLabel.text = [Nsstring stringWithFormat:@"Data at Row %@",_dataArray[indexPath.row]]; return cell; } // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [_dataArray removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } - (void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"willBeginEditingRowAtIndexPath"); //[super setEditing:YES animated:YES]; [self.tableView setEditing:YES animated:YES]; //Self.editing handles the done / edit button tableView.editing = YES; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCellEditingStyle editingStyle = UITableViewCellEditingStyleNone; /*if (tableView.editing)*/ editingStyle = UITableViewCellEditingStyleDelete; return editingStyle; } - (void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"didEndEditingRowAtIndexPath"); //[super setEditing:NO animated:YES]; [self.tableView setEditing:NO animated:YES]; //Self.editing handles the done / edit button tableView.editing = NO; } - (BOOL)tableView:(UITableView *)tableView shouldindentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return NO; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 44; } @end
解决方法
添加SWTableViewCell后我遇到了同样的问题.我已经实现后添加了SWTableViewCell – (void)tableView:(UITableView)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath *.
一旦我删除了这个方法,事情按预期工作.我猜SWTableViewCell安装的视图与尝试基于此方法安装相同类型的视图的系统冲突.