做项目中遇到一个小问题,给大家分享一下
以前做删除是这样,实现UITableView的代理方法即可
// 设Cell编辑- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ return YES;}// 定义编辑样式- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleDelete;}// 进入编辑模式,进行删除操作- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source. }}// 修改编辑按钮文字- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ return @"删除";}OK 上面可以,但是因为项目支持iOS8.0以上,并且需要左滑删除和重命名两种编辑模式,所以我选用了IOS8.0以后的新代理方法
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewRowAction *renameRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"重命名" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // 重命名操作 }]; UITableViewRowAction *deleteRoWAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // 删除操作 }]; return @[deleteRoWAction,renameRowAction];}这时候侧滑,iOS8真机直接侧滑没有反应,调试显示没走新代理方法(iOS9以上真机木有问题)。哎 说好的支持iOS8.0以上呢?
解决办法:
很简单就是把旧的代理方法写上就OK,里面什么也不做
// 进入编辑模式,进行删除操作- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ }应该是iOS8.0中 若旧的代理方法没有实现,然后就调用新的代理方法
新闻热点
疑难解答