gpt4 book ai didi

ios - 迭代除 UIContainerView 之外的所有内容

转载 作者:行者123 更新时间:2023-11-29 00:24:50 25 4
gpt4 key购买 nike

我有一个自定义类(我从 SO 获得)来迭代 UIView 的所有和每个子类。我没有得到的是我无法添加代码来免除 UIContainerView

代码(在UIView+Recursion.m中):

- (NSMutableArray*)allSubViews
{
NSMutableArray *arr= [[NSMutableArray alloc] init];
[arr addObject:self];
for (UIView *subview in self.subviews)
{
[arr addObjectsFromArray:(NSArray*)[subview allSubViews]];
}
return arr;
}

所以我想在for循环中添加,如果是UIContainerView,那么就不要添加到数组中。我尝试了什么:

- (NSMutableArray*)allSubViews
{
NSMutableArray *arr= [[NSMutableArray alloc] init];
[arr addObject:self];
for (UIView *subview in self.subviews)
{
if (![subview isKindOfClass:[UIContainerView class]]) <-- error use of undeclared identifier
[arr addObjectsFromArray:(NSArray*)[subview allSubViews]];
}
return arr;
}

完整的错误信息:

Use of undeclared identifier 'UIContainerView'

类别类似乎无法识别 UIContainerView

最佳答案

您似乎希望检查私有(private)类,这就是您的代码无法编译的原因。如果这是您真正需要做的,那么您可以使用 NSClassFromString:

- (NSMutableArray *)allSubViews
{
Class cvclass = NSClassFromString(@"UIContainerView");
NSMutableArray *arr= [[NSMutableArray alloc] init];
[arr addObject:self];
for (UIView *subview in self.subviews)
{
if (![subview isKindOfClass:cvclass]) {
[arr addObjectsFromArray:[subview allSubViews]];
}
}

return arr;
}

关于ios - 迭代除 UIContainerView 之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com