美文网首页
获取控制器上所有的子控件

获取控制器上所有的子控件

作者: 你就在世界的中心 | 来源:发表于2017-09-20 20:44 被阅读0次

    有时候我们开发会需要获取视图上的子控件

    我这里贴一个简单的方法,而且层级关系明了

    pragma mark - 获取所有子控件

    递归获取子视图
    -(void)getSub:(UIView *)view andLevel:(int)level
    {
    NSArray *subviews = [view subviews];
    // 如果没有子视图就直接返回
    if ([subviews count] == 0) return;
    for (UIView *subview in subviews)
    {
    // 根据层级决定前面空格个数,来缩进显示
    NSString *blank = @"";
    for (int i = 1; i < level; i++)
    {
    blank = [NSString stringWithFormat:@" %@", blank];
    }
    // 打印子视图类名
    NSLog(@"%@%d: %@", blank, level, subview.class);
    // 递归获取此视图的子视图
    [self getSub:subview andLevel:(level+1)];
    }
    }

    调用这个方法
    // 打印所有子视图
    [self getSub:self.navigationController.navigationBar andLevel:1];

    相关文章

      网友评论

          本文标题:获取控制器上所有的子控件

          本文链接:https://www.haomeiwen.com/subject/fufasxtx.html