我在这个问题上坚持了很长时间
我正在尝试将UIControl
(最后是UIView
)添加到我自己的类中有子类的UITableViewCell
(我创建了一个自定义单元格)< / p>
在滑动时,我创建了我的UIControl
类并将其添加到我自己(单元格),到目前为止一切顺利。这是代码
[self addSubview:_statusView];
但是,我正在向自定义单元格中的UIControl
添加目标操作,以便当UIControl
表示他已识别出touchDownEvent时,单元格可以处理。
[self.statusView addTarget:self action:@selector(resetAll:) forControlEvents:UIControlEventTouchDown];
以下是我想在动作中执行的操作,我想从UIControl
(单元格的子视图)中删除self.subviews
,所以我将动作方法设置为这样
- (void)resetAll:(id)sender
{
for (UIView *view in self.subviews) {
if ([view isKindOfClass:[StatusView class]]) {
[view removeFromSuperview];
}
}
}
有人可以指出这段代码中有什么问题吗?因为我无法弄清楚为什么添加到单元格的视图不会被删除。在我看来,subviews属性不包含我添加的UIControl
。
答案 0 :(得分:2)
- (void)resetAll:(id)sender
{
for (UIView *view in self.view.subviews) {
if ([view isKindOfClass:[StatusView class]]) {
[view removeFromSuperview];
}
}
}
或
- (void)resetAll:(id)sender
{
[sender removeFromSuperview];
}
答案 1 :(得分:1)
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];
}
}