仿微信UITableViewCell 左滑删除、确认删除


添加基本方法

 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleDelete;
}
-  (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath

{
    for (UIView *subview in tableView.subviews) {
       if ([NSStringFromClass([subview class]) isEqualToString:@"UISwipeActionPullView"]) {
          if ([NSStringFromClass([subview.subviews[0] class]) isEqualToString:@"UISwipeActionStandardButton"]) {
                 subview.backgroundColor = [UIColor whiteColor];
                 UIButton *deleteBtn = subview.subviews[0];
                 [deleteBtn setWidth:75];
                  UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect: deleteBtn.bounds byRoundingCorners:
                  UIRectCornerBottomRight | UIRectCornerTopRightcornerRadii:CGSizeMake(8,8)];
                 CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
                 maskLayer.frame = deleteBtn.bounds;
                 maskLayer.path = maskPath.CGPath;
                deleteBtn.layer.mask = maskLayer;              
                deleteBtn.backgroundColor = HexRGB(0xF3755C);
               [deleteBtn setTitle:@"删除" forState:UIControlStateNormal];
                }
           }
         }
     }

此方法是ios 11 之后用到的   TARGETS -> Deployment info  -> Deployment Target  设置为11.0



- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MJWeakSelf;
     UIContextualAction *action = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"删除" handler:^(UIContextualAction * _Nonnull action,   __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
         if ([NSStringFromClass([sourceView.superview class]) isEqualToString:@"UISwipeActionStandardButton"]) {
               UIButton *tmpBtn = (UIButton *)sourceView.superview;
               if ([[tmpBtn currentTitle] isEqualToString:@"确认删除"]) {
                   DeviceRealmModel *model = [weakSelf.tableViewArr objectAtIndex:indexPath.section];                 
                  //删除操作
                else{
                    UIImage *img = [self imageWithColor:HexRGB(0xF3755C)];
                    [tmpBtn setBackgroundImage:img forState:UIControlStateNormal];
                    [tmpBtn setTitle:@"确认删除" forState:UIControlStateNormal];
                }
           }
      }];
   // 此处可以添加多个UIContextualAction 放入下面的configuration 数组中
       UISwipeActionsConfiguration *configuration = [UISwipeActionsConfiguration configurationWithActions:@[action]];
      configuration.performsFirstActionWithFullSwipe = NO;
       return configuration;
      }

//  颜色转换为背景图片

- (UIImage *)imageWithColor:(UIColor *)color {
      CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
     UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();                          
   UIGraphicsEndImageContext();   
    return image;
}

不要问我为什么不用设置背景色来设置颜色,此时 操作完成  主意你的xocde

你可能感兴趣的:(仿微信UITableViewCell 左滑删除、确认删除)