开发锦集

iOS cell 左滑删除修改样式

2018-04-30  本文已影响171人  YvanLiu

1、 controller.m

- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
    //刷新cell布局,解决有时候图片无法显示出来的问题
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.isEdit =self.isEdit;
    [cell setNeedsLayout];
    UITableViewRowAction *delegateAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
       ...
    }];
    return @[delegateAction];
}

2、tableViewCell.m

//左划出现分类与删除图标
- (void)layoutSubviews {
    [super layoutSubviews];
    [self setDealDeleteButtonAndClassButton];
}
- (void)setDealDeleteButtonAndClassButton{
    
    NSString *version = [UIDevice currentDevice].systemVersion;
    if (version.doubleValue>=11) {
        // iOS 11层级 (Xcode 9编译): UITableView -> UISwipeActionPullView
        for (UIView *subview in self.superview.subviews) {
            if ([subview isKindOfClass:NSClassFromString(@"UISwipeActionPullView")])  {
                // 和iOS 10的按钮顺序相反
                UIButton *deleteButton = subview.subviews[0];
                [deleteButton setImage:[UIImage imageNamed:@"OneTime_finish2"] forState:(UIControlStateNormal)];
                [deleteButton setTitle:@"" forState:UIControlStateNormal];
            }
        }
    } else {
        // iOS 9-10层级
        for (UIView *subview in self.subviews) {
            if ([subview isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
                UIButton *deleteButton = subview.subviews[0];
                [deleteButton setImage:[UIImage imageNamed:@"OneTime_finish2"] forState:UIControlStateNormal];
                [deleteButton setTitle:@"" forState:UIControlStateNormal];
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读