[英]How to iterate through all UIButtons on screen in Swift 3.0?
我正在嘗試循環迭代視圖中找到的所有UIButton,以便更改每個按鈕的位置。 (見下面的代碼)
for case let button as UIButton in self.view.subviews {
rect = button.frame
rect.origin.x = rect.origin.x + 20
rect.origin.y = rect.origin.y + 20
button.frame = rect
}
但是,當我調試代碼時,我發現循環沒有找到任何按鈕,因此位置保持不變。 我在View Controller中的View中有9個按鈕。
誰知道這個循環有什么問題?
你的代碼對我來說很好。 言下之意是,你的按鈕都沒有的子視圖self.view
,但一些人認為進一步下跌的層次結構的子視圖。 您必須編寫循環的遞歸版本。
例如:
func lookForButton(_ v: UIView) {
let subs = v.subviews
if subs.count == 0 {return}
for vv in subs {
if vv is UIButton {
print(vv) // just testing: do your real stuff here
}
lookForButton(vv)
}
}
lookForButton(self.view)
你的代碼正在運行。 這個:
var view = UIView()
view.addSubview(UIView())
view.addSubview(UIButton())
for case let button as UIButton in view.subviews {
print(button)
}
打印:
<UIButton: 0x7fcc9bd07320; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x60000002dca0>>
結論:self.view.subviews不包含任何UIButtons
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.