我试图使用我的子视图,因为删除按钮不断消失。
@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都在打印,所以我知道它已经进入了,但是我已经尝试了所有这三种方法来将视图放在前面。有什么想法,为什么这不起作用?
答案 0 :(得分:0)
subview2
是subview
的子视图,是self
的子视图。 sendSubviewToBack:
或bringSubviewToFront:
消息的接收者必须是作为参数给出的视图的超级视图。因此,只有您拨打的第二个电话才有效。正确的电话将是
[self.superview bringSubviewToFront:self];
[self bringSubviewToFront:subview];
[subview bringSubviewToFront:subview2];
(sendSubviewToBack:
也一样。)
至于你的实际问题,我无法从发布的代码中找出你正在使用的视图层次结构,但似乎它是不正确的。您可能不应将自定义视图视为self
的直接子视图,而应视为self.contentView
的子视图(根据Apple's documentation)。