Cell doesn't allows to delete it. When swipe happens, it slides back, so it's unable to delete it. Message in console says:
attempting to set a swipe to delete cell when we already have one....
that doesn't seem good
Code:
#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
I had the same problem after adding SWTableViewCell. I added SWTableViewCell after I'd already implemented - (void)tableView:(UITableView)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath*.
Once i'd removed this method, things worked as expected. I guess the view that SWTableViewCell installs conflicts with the system trying to install the same kind of view based on this method.
I had the same error message when I set a timer and was reloading the tableView every time the timer fired (in my case this was once every second). After I removed the timer when I was editing, I stopped getting the error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With