關於遍歷 View 上所有的 UIButton 的問題,求問
for (id obj in self.view.subviews) {
if ([obj isKindOfClass:[UIButton Class]]) {
UIButton theButton = (UIButton)obj;
UIButton
theButton = (UIButton
)objx
;
為什麼在控制項上遍歷子控制項時我們要在 for in 中取 id 屬性再做 if ([obj isKindOfClass:[UIButton Class]])判斷而不能直解取 uibutton ,像下面這樣:
for (id obj in self.view.subviews) { UIButton theButton = (UIButton
)obj;
}🎜
你這也不是直接取UIButton啊,還是我理解有誤,你這是明確的轉換類型了。
subview裡面不一定只有UIButton,也可以有其他控件,你這樣是將所有控件強制轉換為UIButton,這是很危險的,一不小心就會崩潰。
安全的做法是先判斷取到的控制項是不是UIButton,再強制轉換,此時的控制項其實是已經知道了的,強制轉換只是為了使用UIButton的方法和屬性而不會報錯而已。
另外id不是屬性吧親,它是oc一種特殊類型,你可以看做是object。任何物件都能用它做類型。
就是因為你的self.view不一定只有button。你用uibutton強轉如果裡面是個label怎麼辦。會報錯吧。
除非你確定view的所有subview都是button類型,不然你把驢頭按到人身上一定會出錯的。