关于遍历 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;
}
UIButtonを直接取得していないか、私が誤解していました。明示的に型を変換しています。
サブビューには UIButton だけが存在する必要はなく、他のコントロールも強制的に UIButton に変換される可能性があります。これは非常に危険であり、注意しないとクラッシュします。
安全な方法は、まず取得したコントロールが UIButton であるかどうかを判断してから強制変換することです。このときのコントロールの種類は、実際にはエラーを報告せずに UIButton のメソッドとプロパティを使用するだけです。
さらに、id は属性ではありません。これは特別なタイプの oc であり、オブジェクトとして考えることができます。あらゆるオブジェクトを入力できます。
self.view には必ずしもボタンだけがあるわけではないからです。 uibutton を使用して強制転送するときに内部にラベルがある場合はどうすればよいですか?エラーが報告されます。
ビューのすべてのサブビューがボタン タイプであることを確認しないと、ロバの頭を人に押し付けるときに間違いなく間違いを犯します。