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

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

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

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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容