2013-06-26 107 views

回答

17
for(UIView *aView in yourView.subviews){ 
    if([aView isKindOfClass:[YourClass class]]){ 
     //YourClass found!! 
    } 
} 
+1

時,有幾個相同類型的意見,像在的UILabel子視圖這並沒有解決。嘗試在視圖上添加標籤,然後使用viewWithTag訪問子視圖。 – NOUX

+1

答案是問的問題。 –

2

例如,如果您正在查找類型爲UILabel類的對象,則會顯示如下。

for (UIView *subView in [weeklyViewA subviews]) { 
      if ([subView isKindOfClass:[UILabel class]]) { 
       NSLog(@"label class :: %@", [subView description]); 
      } 
     } 
0

這是檢查的解決方案迅速版本:

爲UITextField

例子:

for (_, view) in self.myView.subviews.enumerate(){ 
     if view.isKindOfClass(UITextField){ 
      //Here we go 
     } 
    } 
0
在我看來

isMemberOfClass:isKindOfClass:更好,例如:

for (BadgeButton *button in self.subviews) { 
    if ([button isMemberOfClass:[BadgeButton class]]) { 
     button.selected = NO; 
    } 
} 
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/16152363) –

+0

@JonRose是的,我改進了我的答案。 –

0

斯威夫特答案

對於這種情況,我想我們可以用斯威夫特的first.where語法,這比filter.countfilter.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

相關問題