Ios 从Superview中删除子视图

Ios 从Superview中删除子视图,ios,uiview,subview,superview,Ios,Uiview,Subview,Superview,我真的被这个问题困扰了很长时间 我正在尝试将UIControl(最后是UIView)添加到我自己的类中有子类的UITableViewCell(我制作了一个自定义单元格) 在刷卡时,我创建我的UIControl类并将其添加到我自己(单元格)中,目前为止效果良好。这是密码 [self addSubview:_statusView]; 但是,我正在将目标动作添加到自定义单元格中的我的UIControl,以便当UIControl表示他已识别触地事件时,该单元格可以处理 [self.statusView

我真的被这个问题困扰了很长时间

我正在尝试将
UIControl
(最后是
UIView
)添加到我自己的类中有子类的
UITableViewCell
(我制作了一个自定义单元格)

在刷卡时,我创建我的
UIControl
类并将其添加到我自己(单元格)中,目前为止效果良好。这是密码

[self addSubview:_statusView];
但是,我正在将目标动作添加到自定义单元格中的我的
UIControl
,以便当
UIControl
表示他已识别触地事件时,该单元格可以处理

[self.statusView addTarget:self action:@selector(resetAll:) forControlEvents:UIControlEventTouchDown];
这是我想在操作中做的,我想从
self.subview
(单元格的子视图)中删除
UIControl
,所以我将操作方法设置为如下

- (void)resetAll:(id)sender
{
for (UIView *view in self.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}
}
有人能指出这段代码中的错误吗?因为我真的不明白为什么添加到单元格中的视图没有被删除。在我看来,子视图属性似乎从未包含我添加的
UIControl

- (void)resetAll:(id)sender
{
for (UIView *view in self.view.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}
}


UITableViewCell
在内部对其视图层次结构进行一些操作。您不应将子视图添加到单元格本身,而应添加到其
contentView
,如中所述:

如果要超越预定义样式,可以添加子视图 添加到单元格的contentView属性

所以你必须更换

[self addSubview:_statusView];

然后在
contentView
的子视图上迭代:

for (UIView *view in self.contentView.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}

UITableViewCell
在内部对其视图层次结构进行一些操作。您不应将子视图添加到单元格本身,而应添加到其
contentView
,如中所述:

如果要超越预定义样式,可以添加子视图 添加到单元格的contentView属性

所以你必须更换

[self addSubview:_statusView];

然后在
contentView
的子视图上迭代:

for (UIView *view in self.contentView.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}

UITableViewCell
在内部对其视图层次结构进行一些操作。您不应将子视图添加到单元格本身,而应添加到其
contentView
,如中所述:

如果要超越预定义样式,可以添加子视图 添加到单元格的contentView属性

所以你必须更换

[self addSubview:_statusView];

然后在
contentView
的子视图上迭代:

for (UIView *view in self.contentView.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}

UITableViewCell
在内部对其视图层次结构进行一些操作。您不应将子视图添加到单元格本身,而应添加到其
contentView
,如中所述:

如果要超越预定义样式,可以添加子视图 添加到单元格的contentView属性

所以你必须更换

[self addSubview:_statusView];

然后在
contentView
的子视图上迭代:

for (UIView *view in self.contentView.subviews) {
    if ([view isKindOfClass:[StatusView class]]) {
        [view removeFromSuperview];
    }
}


您的resetAll:选择器被调用了吗?为什么不仅仅调用
[sender removeFromSuperview]
resetAll:
确实被调用了<代码>发送者是事件吗?我想删除的不是
UIView
-(void)resetAll:(UIView*)发送方{[sender removeFromSuperview];}
。为什么我在这个问题上得到-1的声誉?这个网站有时有点迟钝。你的resetAll:selector被调用了吗?为什么不只是调用
[sender removeFromSuperview]
resetAll:
确实被调用了<代码>发送者是事件吗?我想删除的不是
UIView
-(void)resetAll:(UIView*)发送方{[sender removeFromSuperview];}
。为什么我在这个问题上得到-1的声誉?这个网站有时有点迟钝。你的resetAll:selector被调用了吗?为什么不只是调用
[sender removeFromSuperview]
resetAll:
确实被调用了<代码>发送者是事件吗?我想删除的不是
UIView
-(void)resetAll:(UIView*)发送方{[sender removeFromSuperview];}
。为什么我在这个问题上得到-1的声誉?这个网站有时有点迟钝。你的resetAll:selector被调用了吗?为什么不只是调用
[sender removeFromSuperview]
resetAll:
确实被调用了<代码>发送者是事件吗?我想删除的不是
UIView
-(void)resetAll:(UIView*)发送方{[sender removeFromSuperview];}
。为什么我在这个问题上得到-1的声誉?这个网站有时有点迟钝。第一个解决方案不会像resetAll那样工作:方法在
UITableViewCell
上调用,并且它没有
视图
属性当你说
self.view.subviews
时是什么意思?赛尔夫已经是一个UIView的细胞了。它对我有用。谢谢对于(UIView*view in self.view.subview){if([view iskindof class:[StatusView class]]){[view removeFromSuperview];}}第一个解决方案不能像resetAll那样工作:方法是在
UITableViewCell
上调用的,并且它没有
视图
属性当你说
self.view.subview
时是什么意思?赛尔夫已经是一个UIView的细胞了。它对我有用。谢谢对于(UIView*view in self.view.subview){if([view iskindof class:[StatusView class]]){[view removeFromSuperview];}}第一个解决方案不能像resetAll那样工作:方法是在
UITableViewCell
上调用的,并且它没有
视图
属性当你说
self.view.subview
时是什么意思?赛尔夫已经是一个UIView的细胞了。它对我有用。谢谢对于(UIView*view in self.view.subview){if([view iskindof class:[StatusView class]]){[view removeFromSuperview];}}第一个解决方案不能像resetAll那样工作:方法是在
UITableViewCell
上调用的,并且它没有
视图
属性当你说
self.view.subview
时是什么意思?赛尔夫已经是一个UIView的细胞了。它对我有用。谢谢对于(UIView*vie)