5

我试图找到作为Subview添加到UIView的特定类对象,但我找不到任何东西。

4

6 回答 6

25
for(UIView *aView in yourView.subviews){
    if([aView isKindOfClass:[YourClass class]]){
       //YourClass found!!
    }
}
于 2013-06-26T12:37:57.823 回答
3

例如,如果您正在查找 UILabel 类类型的对象,则如下所示。

for (UIView *subView in [weeklyViewA subviews]) {
            if ([subView isKindOfClass:[UILabel class]]) {
                NSLog(@"label class :: %@", [subView description]);
            }
        }
于 2013-06-26T13:10:12.633 回答
2

快速回答

对于这种情况,我认为我们可以使用 Swift 的first.where语法,它比filter.count,更有效filter.isEmpty

因为当我们使用 时filter,它会创建一个底层数组,因此无效,假设我们有一个很大的集合。

所以只需检查视图的subViews集合是否包含特定类型的类,我们可以使用它

let containsBannerViewKind = view.subviews.first(where: { $0 is BannerView }) != nil

相当于:在此视图的子视图集合中找到我与 BannerView 类的第一个匹配项。因此,如果这是真的,我们可以执行我们的进一步逻辑。

参考https ://github.com/realm/SwiftLint/blob/master/Rules.md#first-where

于 2017-09-21T03:55:40.877 回答
0

这是检查解决方案的快速版本:

UITextField 的示例:

    for (_, view) in self.myView.subviews.enumerate(){
        if view.isKindOfClass(UITextField){
            //Here we go
        }
    }
于 2016-07-01T13:36:21.423 回答
0

在我看来。isMemberOfClass:优于isKindOfClass:,例如:

for (BadgeButton *button in self.subviews) {
    if ([button isMemberOfClass:[BadgeButton class]]) {
        button.selected = NO;
    }
}
于 2017-05-17T14:07:06.423 回答
0

Swift 4.2:您可以尝试以下代码:

let allsubviews = self.view.subviews
allsubviews.forEach { (view) in
   if view.isKind(of: UIScrollView.self){
       //current view is UIScrollview
   }
}
于 2019-01-29T19:21:03.963 回答