搜尋

首頁  >  問答  >  主體

objective-c - 關於遍歷 View 上所有的 UIButton 的問題,求問

關於遍歷 View 上所有的 UIButton 的問題,求問

for (id obj in self.view.subviews) {
if ([obj isKindOfClass:[UIButton Class]]) {
UIButton theButton = (UIButton)obj;
UIButton
theButton = (UIButton
)objx

the}Button

;

為什麼在控制項上遍歷子控制項時我們要在 for in 中取 id 屬性再做 if ([obj isKindOfClass:[UIButton Class]])判斷而不能直解取 uibutton ,像下面這樣:


for (id obj in self.view.subviews) { UIButton theButton = (UIButton
)obj;

theButton.xxx = ooo;

}🎜
某草草某草草2761 天前640

全部回覆(4)我來回復

  • 高洛峰

    高洛峰2017-04-28 09:06:24

    你這也不是直接取UIButton啊,還是我理解有誤,你這是明確的轉換類型了。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-28 09:06:24

    subview裡面不一定只有UIButton,也可以有其他控件,你這樣是將所有控件強制轉換為UIButton,這是很危險的,一不小心就會崩潰。
    安全的做法是先判斷取到的控制項是不是UIButton,再強制轉換,此時的控制項其實是已經知道了的,強制轉換只是為了使用UIButton的方法和屬性而不會報錯而已。
    另外id不是屬性吧親,它是oc一種特殊類型,你可以看做是object。任何物件都能用它做類型。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-28 09:06:24

    就是因為你的self.view不一定只有button。你用uibutton強轉如果裡面是個label怎麼辦。會報錯吧。

    回覆
    0
  • 滿天的星座

    滿天的星座2017-04-28 09:06:24

    除非你確定view的所有subview都是button類型,不然你把驢頭按到人身上一定會出錯的。

    回覆
    0
  • 取消回覆