如何管理添加到 UIView 中的子视图?

Posted

技术标签:

【中文标题】如何管理添加到 UIView 中的子视图?【英文标题】:How to manage subviews added in a UIView? 【发布时间】:2013-01-09 11:06:54 【问题描述】:

我在清除视图时遇到问题,对于特定情况,我一直在将用户名作为标签添加到视图中,根据情况我可能有多个用户,现在我的问题是,对于一种情况,我想清除查看而不弹出它,我不知道如何删除那些添加的标签,我有一个想法我可以为每个标签设置标签,我可以稍后使用它来清除。在这种特殊情况下,还有任何其他有效的方法。

希望我的问题很清楚,谢谢。

【问题讨论】:

谢谢大家。我还有一个疑问,如果我要清除整个视图,那么下面的答案就可以了,如果我想保留一些与用户名无关的常用标签,那我该怎么办? 【参考方案1】:

使用

for (UIView* view in self.view.subviews) 
    if(view isKindOfClass:[UILabel class]) 
        //do whatever you want to do
    

【讨论】:

【参考方案2】:

您可以像这样删除所有子视图:

for (UIView *subView in [view subviews])
    [subView removeFromSuperview];

或者如果你想访问标签值为n的特定视图,

UIView *subview = [view viewWithTag:n]

【讨论】:

【参考方案3】:

可以通过以下方式进行

for (UIView *view in [self.view subviews])

    if ([view isKindOfClass:[UILabel class]])
    
        [view removeFromSuperview];
    

希望你问这个问题。

【讨论】:

【参考方案4】:
[labelName removeFromSuperview];

【讨论】:

【参考方案5】:

使用这个:

for(id viewSub in self.view.subviews)
    
        [viewSub removeFromSuperview];
    

这将删除 View 的所有子视图

【讨论】:

【参考方案6】:

试试这个:

for (UIView *v in [self.relatedView subviews])

    [v removeFromSuperview];

【讨论】:

【参考方案7】:

调用下面的方法并将“UIWebView”对象作为参数传递:

+(void)removeAllSubViews:(id)pObj

    NSArray *Array = [pObj subviews];
    for(int index = 0; index < [Array count]; index++)
    
        [[Array objectAtIndex:index] removeFromSuperview];
    

如果你想要任何特定的对象,你也可以像这样检查对象:

if(view isKindOfClass:[UILabel class]) 
    //do whatever you want to do

干杯!

【讨论】:

以上是关于如何管理添加到 UIView 中的子视图?的主要内容,如果未能解决你的问题,请参考以下文章

将 xib 中的子视图添加到自定义 UIView

将 UIView 添加到已添加到 MainView 的子视图中

如何在不知道它是哪个视图的情况下将 UIView 添加为最顶层视图的子视图?

UIPickerView 在 UIView 中不显示添加的子视图

如何获取 UIView 中特定子视图的计数?

我的子视图中的 UIButton 不起作用