iOS开发之tableView实现左滑删除功能
前言
这几天要实现左划删除的功能,发现网上很多帖子大多出自一人之手,然后都是copy的文章,其实都没有那么复杂,只实现一个代理方法就可以了
方法如下
-(void)tableView:(UITableView*)tableViewcommitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath*)indexPath { if(editingStyle==UITableViewCellEditingStyleDelete){ //删除数据源的数据,self.cellData是你自己的数据 [self.cellDataremoveObjectAtIndex:indexPath.row]; //删除列表中数据 [tableViewdeleteRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationFade]; } }
默认删除的文字为Delete,要改为中文实现
-(NSString*)tableView:(UITableView*)tableViewtitleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath*)indexPath { return@"删除";//默认文字为Delete }
下面这两个代理方法不用写也可以,默认就是这样
-(UITableViewCellEditingStyle)tableView:(UITableView*)tableVieweditingStyleForRowAtIndexPath:(NSIndexPath*)indexPath{ returnUITableViewCellEditingStyleDelete; } -(BOOL)tableView:(UITableView*)tableViewcanEditRowAtIndexPath:(NSIndexPath*)indexPath { returnYES; }
如果你报了这个错误:
'Invalidupdate:invalidnumberofrowsinsection0.Thenumberofrowscontainedinanexistingsectionaftertheupdate(5)mustbeequaltothenumberofrowscontainedinthatsectionbeforetheupdate(5),plusorminusthenumberofrowsinsertedordeletedfromthatsection(0inserted,1deleted)andplusorminusthenumberofrowsmovedintooroutofthatsection(0movedin,0movedout)
你把代理方法中这两个方法顺序搞混了,先删除数据,再删除cell
[self.cellDataremoveObjectAtIndex:indexPath.row];这个方法在前
[tableViewdeleteRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationFade];这个方法在后
还有就是,别2到没设置代理,tableView.delegate=self;
总结
以上就是关于iOS利用tableView实现左划删除功能的全部内容了,希望本文的内容对给iOS开发者们能有一定的帮助,如果有疑问大家可以留言交流。