自定义单元格覆盖删除按钮

Ten*_*kar 4 xcode ios ios8

在此输入图像描述

我的一个项目有问题.我在图片中有一个tableview.我的问题是我的自定义单元格背景与UITableView删除按钮重叠.任何人都可以帮我把它带到前面.

  1. 我使用下面的代码,但一些开发人员说,如果我们使用该代码Apple可能会拒绝您的应用程序

    - (void)layoutSubviews
    {
        [super layoutSubviews];
    
        for (UIView *subview in self.subviews) {
            for (UIView *subview2 in subview.subviews) {
                //NSLog(@"confirm is %@",[subview2 class]);
                if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"])
                {
                    // move delete confirmation view
                    [subview bringSubviewToFront:subview2];
                } else if ([NSStringFromClass([subview2 class]) isEqualToString:@"_UITableViewCellActionButton"])
                {
                    [subview bringSubviewToFront:subview2];
                }
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一个问题是下面的代码只适用于iOS 7但不适用于iOS 8.

  3. 如果我将- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;方法设置为YES,我没有问题,但我们不想缩进.

任何想法都可能非常有用.

小智 9

UITableViewCelliOS 7和iOS 8中的子视图层次结构不同,请尝试我的解决方案.

- (void)layoutSubviews {

    [super layoutSubviews];

    for (UIView *subview in self.subviews) {

        // for iOS 8
        if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
            [self bringSubviewToFront:subview];
            return;
        }



        // for iOS 7
        for (UIView *subview2 in subview.subviews) {
            if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
                [subview bringSubviewToFront:subview2];
                return;
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)