Ios 在UIView层次结构中拾取自定义视图

Ios 在UIView层次结构中拾取自定义视图,ios,cocoa-touch,uiview-hierarchy,Ios,Cocoa Touch,Uiview Hierarchy,在这种情况下,应该选择所有自定义视图(而不是系统视图类型,如UILabel或UIButton等),如XXButton或XXView。我如何迭代UIView的子视图以找出所有自定义视图?换句话说,如何区分未知类自定义视图和Apple系统视图?请尝试以下内容: for viw in self.view.subviews { if viw.classForCoder == yourCustomViewClass { // do your required operation } } 在上面

在这种情况下,应该选择所有自定义视图(而不是系统视图类型,如UILabel或UIButton等),如XXButton或XXView。我如何迭代UIView的子视图以找出所有自定义视图?换句话说,如何区分未知类自定义视图和Apple系统视图?

请尝试以下内容:

for viw in self.view.subviews
{
if viw.classForCoder == yourCustomViewClass
{
     // do your required operation
}
}
  • 在上面的例子中,我们首先使用for循环来迭代特定视图的所有子视图

  • 然后,我们检查了子视图数组中视图的类


  • 创建
    XXButton
    XXView
    时,它们基本上分别继承自
    ui按钮
    ui视图
    。因此,您必须只显式地检查自定义类

    //Loop through all the views in your superview.
    for(UIView *anyView in self.view.subviews) {
    
        if([anyView isKindOfClass:[XXButton class]]) {
    
            // It's a XXButton. Need to cast it.
            XXButton *btn = (XXButton *)anyView;
    
        } else if([anyView isKindOfClass:[XXView class]]) {
    
            // It's a XXView. Need to cast it.
            XXView *view = (XXView *)anyView;
    
        }
    
        // You can multiple else if conditions for your custom UI classes.
    }
    

    这些自定义视图来自何处?为什么需要它们?询问视图层次结构可能不是正确的解决方案…@Wain customviews可能来自第三方的捆绑包或其他什么当您遇到问题时,因为您不知道如何区分Apple public和Apple private,随机第三方和您自己的视图类…
    -isMemberOfClass:
    方法可能对您有所帮助。谢谢您的回答,但实际上我不知道customView类,或者在不同的类中有很多自定义视图使用此块在需要时只需替换自定义calss名称检索自定义视图后的最终目标是什么