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

关于遍历 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啊,还是我理解有误,你这是显式的转换类型了。

曾经蜡笔没有小新

subview里面不一定只有UIButton,也可以有其他控件,你这样是将所有控件强制转换为UIButton,这是很危险的,一不小心就会崩溃。
安全的做法是先判断取到的控件是不是UIButton,再强制转换,此时的控件类型其实是已经知道了的,强制转换只是为了使用UIButton的方法和属性而不会报错而已。
另外id不是属性吧亲,它是oc一种特殊类型,你可以看做是object。任何对象都能用它做类型。

Ty80

就是因为你的self.view不一定只有button。你用uibutton强转如果里面是个label怎么办。会报错吧。

滿天的星座

除非你确定view的所有subviews都是button类型,不然你把驴头按到人身上肯定会出错的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板