我试图找到作为Subview添加到UIView的特定类对象,但我找不到任何东西。
问问题
10953 次
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 回答