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

时间:2014-11-07 09:32:11

标签: ios xcode ios8

enter image description here

我的一个项目中存在问题。我在图片中有一个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];
                }
            }
        }
    }
    
  2. 另一个问题是以下代码仅适用于iOS 7,但在iOS 8中无效。

  3. 如果我将- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;方法设置为YES,我没有问题,但我们不想缩进。
  4. 任何想法都可能非常有用。

2 个答案:

答案 0 :(得分:9)

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

- (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;
            }
        }

    }
}

答案 1 :(得分:1)

您需要在contentView中添加一个按钮,而不是直接向单元格视图添加