objective-c - 关于遍历 View 上所有的 UIButton 的问题,求问
某草草
某草草 2017-04-28 09:04:24
0
4
638

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

}

某草草
某草草

全員に返信(4)
小葫芦

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

いいねを押す +0
曾经蜡笔没有小新

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

いいねを押す +0
Ty80

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

いいねを押す +0
滿天的星座

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート