lisey lee
lisey lee

Reputation: 21

iOS TableView swipe UIContextualAction can not get a right image

I want to set a image in the left swipe of cell, there is the code, but It doesn't work.

- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
if (@available (iOS 11, *)) {
    UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"删除" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
        if (self.dataArray.count > indexPath.row) {
            [self.dataArray removeObjectAtIndex:indexPath.row];
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        }

        completionHandler(YES);
    }];

    deleteAction.backgroundColor = [UIColor blueColor];

    UIContextualAction *backAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:nil handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
        // 不做任何事
        [tableView setEditing:NO animated:YES];
        completionHandler(YES);
    }];
    backAction.image = [UIImage imageNamed:@"public_system_success"];

    UISwipeActionsConfiguration *configuration = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction, backAction]];

    return configuration;
}

return nil;

}

I got this left swipe menu

In fact the image is the same with cell image in the left. What's wrong?

Upvotes: 1

Views: 1884

Answers (3)

zhihua shen
zhihua shen

Reputation: 1

Change UIContextualActionStyleDestructive to UIContextualActionStyleNormal

Upvotes: 0

Nikola Markovic
Nikola Markovic

Reputation: 349

Use transparent back for the checkmark, because UIContextualAction renders images as templates, so any filled area of the image will appear white.

This should be your image:

enter image description here

Upvotes: 1

felixDkatt
felixDkatt

Reputation: 43

Check your image. I think the cell is applying a tint to your images when u swipe select them. Try this.. 1. Go to assets folder in xcode and select your image. 2. Go to Property Inspector on the right and select "render as" options and choose Original Image. 3. test.

Let me know if that helped :-)

Upvotes: 0

Related Questions