关于遍历 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啊,还是我理解有误,你这是显式的转换类型了。
subview里面不一定只有UIButton,也可以有其他控件,你这样是将所有控件强制转换为UIButton,这是很危险的,一不小心就会崩溃。
安全的做法是先判断取到的控件是不是UIButton,再强制转换,此时的控件类型其实是已经知道了的,强制转换只是为了使用UIButton的方法和属性而不会报错而已。
另外id不是属性吧亲,它是oc一种特殊类型,你可以看做是object。任何对象都能用它做类型。
就是因为你的self.view不一定只有button。你用uibutton强转如果里面是个label怎么办。会报错吧。
除非你确定view的所有subviews都是button类型,不然你把驴头按到人身上肯定会出错的。