[英]Remove Subview from Superview
我确实在这个问题上停留了很长时间
我试图将UIControl
(最后是UIView
)添加到我自己的类中有子类的UITableViewCell
(我创建了自定义单元格)
滑动后,我创建了我的UIControl
类并将其添加到我自己(单元格)中,到目前为止一切顺利。 这是代码
[self addSubview:_statusView];
但是,我在自定义单元格中向我的UIControl
添加了一个目标操作,以便当UIControl
说他已经识别出touchDownEvent时,该单元格可以进行处理。
[self.statusView addTarget:self action:@selector(resetAll:) forControlEvents:UIControlEventTouchDown];
这就是我要在操作中执行的操作,我想从self.subviews
(单元格的子视图)中删除该UIControl
,因此我将action方法设置为如下所示
- (void)resetAll:(id)sender
{
for (UIView *view in self.subviews) {
if ([view isKindOfClass:[StatusView class]]) {
[view removeFromSuperview];
}
}
}
有人可以指出这段代码有什么问题吗? 因为我无法真正弄清楚为什么未删除添加到单元格的视图。 在我看来,subviews属性从不包含我添加的UIControl
。
- (void)resetAll:(id)sender
{
for (UIView *view in self.view.subviews) {
if ([view isKindOfClass:[StatusView class]]) {
[view removeFromSuperview];
}
}
}
要么
- (void)resetAll:(id)sender
{
[sender removeFromSuperview];
}
UITableViewCell
内部对其视图层次结构进行一些操作。 您应该将子视图添加到单元格本身,而不是添加到其contentView
,如docs中所述:
如果要超越预定义的样式,可以将子视图添加到单元格的contentView属性。
所以你必须更换
[self addSubview:_statusView];
与
[self.contentView addSubview:_statusView];
然后迭代contentView
子视图:
for (UIView *view in self.contentView.subviews) {
if ([view isKindOfClass:[StatusView class]]) {
[view removeFromSuperview];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.