无法将删除子视图带到前面

时间:2014-03-03 01:01:43

标签: ios objective-c uitableview

我试图使用我的子视图,因为删除按钮不断消失。

@implementation MyCell : UITableViewCell

- (void)layoutSubviews
{
    [super layoutSubviews];

    for (UIView *subview in self.subviews) {

        for (UIView *subview2 in subview.subviews) {

            NSLog(@"HERE!");
            if ([NSStringFromClass([subview2 class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
                NSLog(@"got inside the if!");
                [subview2 sendSubviewToBack:subview];
                [subview bringSubviewToFront:subview2];
                [self.superview bringSubviewToFront:subview2];

            }
        }
    }
}

@end

我将UITableViewCell子类化。两个NSLog都在打印,所以我知道它已经进入了,但是我已经尝试了所有这三种方法来将视图放在前面。有什么想法,为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

subview2subview的子视图,是self的子视图。 sendSubviewToBack:bringSubviewToFront:消息的接收者必须是作为参数给出的视图的超级视图。因此,只有您拨打的第二个电话才有效。正确的电话将是

[self.superview bringSubviewToFront:self];
[self bringSubviewToFront:subview];
[subview bringSubviewToFront:subview2];

sendSubviewToBack:也一样。)

至于你的实际问题,我无法从发布的代码中找出你正在使用的视图层次结构,但似乎它是不正确的。您可能不应将自定义视图视为self的直接子视图,而应视为self.contentView的子视图(根据Apple's documentation)。