2

How can I remove all buttons from a view using iOS 7?

Here's code that works in earlier versions of iOS:

                for(UIView *view in cell.subviews){
                    if([view isMemberOfClass:[UIButton class]]){
                        [(UIButton *)view removeFromSuperview];
                    }
                }
4

4 回答 4

6

首先,您需要从视图中获取所有子视图,然后检查所有视图是 UIButton 的类型。有关更多信息,请参阅此...

for (UIView *view in self.view.subviews)
    {
        if ([view isMemberOfClass:[UIButton class]])
        {
            [(UIButton *)view removeFromSuperview];
        }
    }
于 2013-10-02T05:04:47.547 回答
4

看起来您根本没有在子视图中循环。假设这是一个视图控制器:

NSArray * allSubviews = [self.view subviews];
for(UIView view in allSubviews)
{
    if([view isMemberOfClass:[UIButton class]])
    {                                     
        [view removeFromSuperview];                                 
    }
}

您也不需要在这里将“ view”转换为“ UIButton *”,因为“”的基类UIView是实现“ removeFromSuperview”的东西。

于 2013-10-02T05:04:26.163 回答
2

抱歉回复晚了。实际上,这部分代码在 iOS 6.0 之前都可以使用,但在 iOS 7.0 及更高版本中,该代码不起作用。

UIScrollview所以最后我找到了使用以下语句删除所有子视图的解决方案。

[scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)].
于 2014-08-04T05:55:00.467 回答
0

试试看,这会奏效

for(UIView *view in self.view.subviews) 
{
    if ([view isKindOfClass:[UIButton class]])
    {
        [view  removeFromSuperview];
    }
}
于 2013-10-02T05:15:59.587 回答