关于遍历 View 上所有的 UIButton 的问题,求问
for (id obj in self.view.subviews) {
if ([obj isKindOfClass:[UIButton Class]]) {
UIButton theButton = (UIButton)obj;
theButton.xxx = ooo;
}
}
为什么在控件上遍历子控件时我们要在 for in 中取 id 属性再做 if ([obj isKindOfClass:[UIButton Class]])判断而不能直解取 uibutton ,像下面这样:
for (id obj in self.view.subviews) {
UIButton theButton = (UIButton)obj;
theButton.xxx = ooo;
}
Vous ne prenez pas directement UIButton, ou j'ai mal compris, vous convertissez explicitement le type.
Il n'y a pas nécessairement seulement UIButton dans la sous-vue, mais il peut aussi y avoir d'autres contrôles. Vous forcez la conversion de tous les contrôles en UIButton. Ceci est très dangereux et plantera si vous ne faites pas attention.
Le moyen le plus sûr consiste d'abord à déterminer si le contrôle obtenu est un UIButton, puis à forcer la conversion. Le type de contrôle à ce moment-là est en fait déjà connu. La conversion forcée consiste simplement à utiliser les méthodes et les propriétés de UIButton sans signaler de message. erreur.
De plus, l'identifiant n'est pas un attribut, ma chère, c'est un type spécial d'oc, vous pouvez le considérer comme un objet. N'importe quel objet peut être saisi avec.
C’est parce que votre self.view n’a pas nécessairement que des boutons. Que devez-vous faire s'il y a une étiquette à l'intérieur lorsque vous utilisez uibutton pour forcer le transfert ? Il signalera une erreur.
À moins que vous ne vous assuriez que toutes les sous-vues de la vue sont des types de boutons, vous ferez certainement une erreur lorsque vous appuierez sur la tête d'âne sur le corps humain.