検索

ホームページ  >  に質問  >  本文

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日前645

全員に返信(4)返信します

  • 高洛峰

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

    UIButtonを直接取得していないか、私が誤解していました。明示的に型を変換しています。

    返事
    0
  • 曾经蜡笔没有小新

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

    サブビューには UIButton だけが存在する必要はなく、他のコントロールも強制的に UIButton に変換される可能性があります。これは非常に危険であり、注意しないとクラッシュします。
    安全な方法は、まず取得したコントロールが UIButton であるかどうかを判断してから強制変換することです。このときのコントロールの種類は、実際にはエラーを報告せずに UIButton のメソッドとプロパティを使用するだけです。
    さらに、id は属性ではありません。これは特別なタイプの oc であり、オブジェクトとして考えることができます。あらゆるオブジェクトを入力できます。

    返事
    0
  • PHP中文网

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

    self.view には必ずしもボタンだけがあるわけではないからです。 uibutton を使用して強制転送するときに内部にラベルがある場合はどうすればよいですか?エラーが報告されます。

    返事
    0
  • 滿天的星座

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

    ビューのすべてのサブビューがボタン タイプであることを確認しないと、ロバの頭を人に押し付けるときに間違いなく間違いを犯します。

    返事
    0
  • キャンセル返事