关于遍历 View 上所有的 UIButton 的问题,求问

2015-12-20 00:16:55 +08:00
 jpchen
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;

}
2365 次点击
所在节点    iDev
4 条回复
fogisland
2015-12-20 00:23:25 +08:00
self.view.subviews 里除了 UIButton 外很可能还有很多其它类型的子 view ,比如 UILabel 什么的,不做过滤的话,会把不是 UIButton 的 view 强转为 UIButton , 显然不合理。
推荐类似的问题去 segmentfault 或者 cocochina 问,那里 iOS 开发的多一些。
jpchen
2015-12-20 00:30:36 +08:00
@fogisland 谢谢,我新手,十分感谢
UtopiaCHN
2015-12-20 02:25:54 +08:00
@fogisland iv2ex
superleexpert
2015-12-21 16:17:48 +08:00
另外,觉得这个逻辑可以完善下,这个 for 只能遍历到 self.view 下的所有控件,可以用个递归继续往下找, view 的 view 的 view 的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX