3
這是一個使用init(重複:count)創建4個子視圖的ViewController。使用init(重複:count)創建的視圖上的Swift addSubview()不起作用
在viewDidLoad中,我將它們添加爲子視圖並設置其框架。當我運行應用程序時,只會添加最後一個視圖。
class ViewController: UIViewController {
let subviews = [UIView].init(repeating: UIView(), count: 4)
override func viewDidLoad() {
super.viewDidLoad()
for i in 0..<subviews.count {
self.view.addSubview(subviews[i])
self.subviews[i].backgroundColor = UIColor.red
self.subviews[i].frame = CGRect(x: CGFloat(i) * 35, y: 30, width: 30, height: 30)
}
}
}
下面是相同的代碼只是不使用的init(重複:計數)我使用
的封閉件。這工作正常 - 所有子視圖都被添加。
class ViewController: UIViewController {
let subviews: [UIView] = {
var subviews = [UIView]()
for i in 0..<4 {
subviews.append(UIView())
}
return subviews
}()
override func viewDidLoad() {
//same as above...
}
}
謝謝!你發現我的錯誤。我認爲你也可以去掉地圖閉合上的外部圓括號。 – MH175
你可以但我不喜歡在這種情況下。 –