recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - 关于遍历 View 上所有的 UIButton 的问题,求问

关于遍历 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;

}

某草草某草草2761 Il y a quelques jours646

répondre à tous(4)je répondrai

  • 高洛峰

    高洛峰2017-04-28 09:06:24

    Vous ne prenez pas directement UIButton, ou j'ai mal compris, vous convertissez explicitement le type.

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-28 09:06:24

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-28 09:06:24

    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.

    répondre
    0
  • 滿天的星座

    滿天的星座2017-04-28 09:06:24

    À 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.

    répondre
    0
  • Annulerrépondre