2016-03-11 6 views
0

Il existe une situation qui doit sélectionner toutes les vues personnalisées (pas de type de vue système telles que UILabel ou UIButton etc.) comme XXButton ou XXView. Comment puis-je itérer les sous-vues d'UIView pour comprendre toutes les vues personnalisées? En d'autres termes, comment faire la distinction entre les vues personnalisées de classe inconnue et les vues système Apple?ramasser des vues personnalisées dans la hiérarchie UIView

+0

interroger la vue hiérarchie n'est probablement pas la bonne solution ... – Wain

+0

@Wain customviews peut-être à partir d'un bundle par un tiers ou autre – musixlemon

+0

alors vous avez un problème parce que vous ne savez pas comment faire la différence entre Apple public, Apple privé , 3ème partie aléatoire et vos propres classes d'affichage ... – Wain

Répondre

0

Essayez de suivre,

for viw in self.view.subviews 
{ 
if viw.classForCoder == yourCustomViewClass 
{ 
    // do your required operation 
} 
} 
  1. Dans le cas ci-dessus nous avons d'abord utilisé dans la boucle pour itérer sur tous les sous vues de vue.

  2. Ensuite, nous avons vérifié la classe pour la vue de la gamme

+0

merci pour la réponse, mais en fait je ne savais pas la classe customView ou il y a beaucoup de vues personnalisées dans la classe – musixlemon

+0

utiliser ce bloc où jamais vous avez besoin –

+0

juste remplacer le nom de calss personnalisé –

0

du sous-vue Lorsque vous avez créé un XXButton ou XXView, ils ont essentiellement hérités du UIButton et UIView respectivement. Vous devez donc vérifier explicitement votre classe personnalisée. D'où viennent ces vues personnalisées et pourquoi en avez-vous besoin?

//Loop through all the views in your superview. 
for(UIView *anyView in self.view.subviews) { 

    if([anyView isKindOfClass:[XXButton class]]) { 

     // It's a XXButton. Need to cast it. 
     XXButton *btn = (XXButton *)anyView; 

    } else if([anyView isKindOfClass:[XXView class]]) { 

     // It's a XXView. Need to cast it. 
     XXView *view = (XXView *)anyView; 

    } 

    // You can multiple else if conditions for your custom UI classes. 
}