Heim > Fragen und Antworten > Hauptteil
关于遍历 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;
}
曾经蜡笔没有小新2017-04-28 09:06:24
subview里面不一定只有UIButton,也可以有其他控件,你这样是将所有控件强制转换为UIButton,这是很危险的,一不小心就会崩溃。
安全的做法是先判断取到的控件是不是UIButton,再强制转换,此时的控件类型其实是已经知道了的,强制转换只是为了使用UIButton的方法和属性而不会报错而已。
另外id不是属性吧亲,它是oc一种特殊类型,你可以看做是object。任何对象都能用它做类型。